タグ付けされた質問 「function」

UnixおよびLinuxのコンテキストでの関数の使用に関する質問(ほとんどがシェルスクリプトに限定されません)。Python、Perl、Rubyなどでのプログラミングに関する質問は、Stack Overflowで質問してください。


2
バッシュでローカル変数をインクリメントする方法は?
データ 1 \begin{document} 3 コード #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 戻ります2が欲しいです3。私はbashスクリプトに数値を追加するにはどうすればよいかについてのこの答えによって失敗に終わりました: START2=$((getStart+1)) Bashスクリプトでローカル変数をインクリメントするにはどうすればよいですか?

2
古い定義の観点からbash関数を再定義するにはどうすればよいですか?
古い定義の観点からbash関数を再定義する方法はありますか?たとえば、次のコードブロックを関数のプリアンブルに追加しますcommand_not_found_handle ()。 # Check if $1 is instead a bash variable and print value if it is local VAL=$(eval echo \"\$$1\") if [ -n "$VAL" ] && [ $# -eq 1 ]; then echo "$1=$VAL" return $? fi 現在、/ etc / profile.d / PackageKit.shで定義されており、bash起動スクリプトをソースとしています。 そうすれば、変数名を入力するだけでコマンドプロンプトで環境変数の値を照会できます(その名前のコマンドが存在しない場合)。例えば user@hostname ~:$ LANG LANG=en_AU.utf8 現在の定義をコピーして貼り付け、に独自の変更を追加できることは知っていますが~/.bashrc、コードの再利用を伴うよりエレガントな方法を探しています。 …
13 bash  function 

2
シェルの有効な関数名の文字
拡張Unicode文字を使用すると、多くのユーザーにとって便利です(疑いの余地はありません)。 単純なシェル(ash(busybox)、dash)およびkshは次のように失敗します: tést() { echo 34; } tést しかし、bash、mksh、lksh、およびzshはそれを許可しているようです。 POSIXの有効な関数名はこのNamesの定義を使用することを認識しています。つまり、この正規表現: [a-zA-Z_][a-zA-Z0-9_]* ただし、最初のリンクでは次のようにも言われています。 実装では、関数名に他の文字を拡張として使用できます。 質問は次のとおりです。 これは受け入れられ、文書化されていますか? どこ? どのシェル用か(もしあれば)? 関連質問: シェル関数名に特殊文字を使用できますか? 関数名にメタ文字(>)を使用することに興味はありません。 「-」 を含むUpstartおよびbashの関数名演算子(減算「-」)が名前の一部であるべきだとは思わない。
13 bash  shell  zsh  function 


2
関数のローカルでBashスクリプトエコー
bashスクリプトでは、できる限り変数を関数にローカルにして、以下のような関数から必要なものを渡そうとします #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" しかし、関数自体のエコーを含めながらこれを行うことができるので、関数に出力する独自のメッセージがある場合、それらを変数でキャッチする必要はありません #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable echo "This function is done now" # do not return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" # should only echo …

2
bash関数のオプションパラメータ
こんな感じのSVNブランチを素早く作る機能があります function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; } アドレスなどを調べてコピーして貼り付ける必要なしに、新しいブランチをすばやく作成するために使用します。ただし、メッセージ(-mオプション)の場合は、3番目のパラメーターを指定するとメッセージとして使用され、それ以外の場合は「$ 2の開発ブランチ」の「デフォルト」メッセージが使用されるようにしたいと思います。これがどのように行われるかを誰かが説明できますか?

3
端末ではなくbash関数を終了します
私はzookeeperをインストールする以下のbashスクリプトを持っていますが、まだインストールされていない場合のみです。 ##zookeper installZook(){ ZOOK_VERSION="3.4.5" ZOOK_TOOL="zookeeper-${ZOOK_VERSION}" ZOOK_DOWNLOAD_URL="http://www.us.apache.org/dist/zookeeper/${ZOOK_TOOL}/${ZOOK_TOOL}.tar.gz" if [ -e $DEFAULT_INSTALLATION_DEST/${ZOOK_TOOL} ]; then echo "${ZOOK_TOOL} alreay installed"; exit 1; # <<<< here elif [ ! -e $DEFAULT_SOURCE_ROOT/${ZOOK_TOOL}.tar.gz ]; then wgetIt $ZOOK_DOWNLOAD_URL else echo "[info] : $DEFAULT_SOURCE_ROOT/$ZOOK_TOOL already exists" fi sudo mkdir -p /var/lib/zookeeper sudo mkdir -p /var/log/zookeeper tarIt "$DEFAULT_SOURCE_ROOT/$ZOOK_TOOL.tar.gz" sudo chmod …

2
関数名で%%はどういう意味ですか?
の出力を見ると、env次の関数もあることがわかりました。 BASH_FUNC_mc%%=() { . /usr/share/mc/mc-wrapper.sh } /usr/share/mc/mc-wrapper.shファイルの内容は次のとおりです。 MC_USER=`id | sed 's/[^(]*(//;s/).*//'` MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$" /usr/bin/mc -P "$MC_PWD_FILE" "$@" if test -r "$MC_PWD_FILE"; then MC_PWD="`cat "$MC_PWD_FILE"`" if test -n "$MC_PWD" && test -d "$MC_PWD"; then cd "$MC_PWD" fi unset MC_PWD fi rm -f "$MC_PWD_FILE" unset MC_PWD_FILE 何をする%%文字は、関数名に意味ですか?特定の場合に呼び出される関数にしますか、それとも他の関数とは異なる方法で呼び出すことができますか? openSUSE 42.3とBashバージョン4.3.42(1)-release(x86_64-suse-linux-gnu)を使用していますが、違いがある場合は、

1
インタラクティブに使用することを目的とした関数での使用法コメントの表示
私は、.bashrcターミナルでインタラクティブに使用することを意図して、いくつかの関数を定義しています。私は通常、それらの前に、その使用目的を説明するコメントを付けます。 # Usage: foo [bar] # Foo's a bar into a baz foo() { ... } これは、ソースコードを参照する場合は問題ありtypeませんが、関数が何を実行するかをすばやく思い出させるためにターミナルで実行すると便利です。ただし、これには(当然のことながら)コメントは含まれていません。 $ type foo foo is a function foo () { ... } 「このようなコメントtypeが表示され、表示されるようになっていたらいいのではないか」と私は思いました。そして、Pythonのdocstringsの精神で私はこれを思いつきました: foo() { : Usage: foo [bar] : "Foo's a bar into a baz" ... } $ type foo foo is …

1
コマンドの一部としてスペースを含むBashエイリアス
エイリアス自体にスペースがあるbashエイリアスを作成しようとしています。 考え方は、エイリアス(つまりcon)はの略ですsudo openvpn --config /path/to/my/openvpn/configs/。conエイリアスを使用すると、読み取り可能なコマンドになります。 すなわち: `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf` 次のようにエイリアスを宣言できないことを理解しています con ="sudo openvpn --config /path/to/my/openvpn/configs/"。このシナリオではbash関数は機能しますか?私はそれについて聞いたことがありませんが、このマイナーな問題の解決策を研究するとき。

2
カスタムbash関数とエイリアスを文書化する方法は?
問題: 複数のbash関数とエイリアスがあります。頭の上にあるものすべてを覚えているわけではないので、たいていの場合.bash_functions、.bash_aliasesファイルを開いて必要なものを見つけます。 質問: bashプロンプトから使用できる関数/エイリアスを一覧表示するにはどうすればよいですか? コメント(PHPDocのようなもの)を使用してbash関数/エイリアスを文書化することは可能ですか? ファイルを開かずに、利用できるものを出力する簡単で便利な方法が欲しいのですが。コマンドを実行して、関数/エイリアスの動的リストを吐き出させると便利です(使用例はプラスです)。:)

1
シェル関数の現在の定義を表示する
だから私は常にbashrcを編集していて、bashrcは誤った関数定義で更新されていますが、機能している関数定義でターミナルを開いています。(更新されたbashrcを入手するまで定義が変更されないため)この場合、機能する関数の定義をどのように検索できますか?たとえば、次のように入力すると、 alias function_name そのエイリアスの定義が何であるかがわかります。機能に似たコマンドはありますか?そうでない場合、現在の端末が使用しているbashrc全体を出力するコマンドはありますか?
11 function  bashrc 

2
この3つのことをこのbashコードで説明してくれませんか?
私が持っているfunction私の中.bashrcのファイル。私はそれが何をしているのか知っています、それはX個の多くのディレクトリをcd ここにあります: up() { local d="" limit=$1 for ((i=1 ; i <= limit ; i++)) do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } しかし、それについてこれらの3つのことを私に説明できますか? d=$d/.. sed 's/^\///' d=.. なぜこのようにしないのですか? up() { limit=$1 for ((i=1 ; i <= limit ; …

4
bash関数のメタデータの割り当てと検査
私は開発プロジェクトで通常行う多くのタスクを自動化する多くのbash関数を生成して登録します。その世代は、私が取り組んでいるプロジェクトのメタデータに依存します。 このようにして、関数に生成されたプロジェクトの情報を注釈を付けたいです。 func1() { # This function was generated for project: PROJECT1 echo "do my automation" } 理想的には、定義を調べるとコメントを見ることができます。 $ type func1 func1 is a function func1 () { # This function was generated for project: PROJECT1 echo "do my automation" } しかし、どういうわけかbashは、関数の実行時ではなく、関数のロード時にコメントを無視するようです。だからコメントは失われ、私はこの結果を得ます: func1 is a function func1 () { echo …
10 bash  function 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.