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

変数は、1つまたは複数の値を保持する、記号的な意味で正しく選択された場合の名前です。質問がシェルスクリプトでの変数の使用に固有の場合は、このタグを使用します(プログラミング言語の変数について質問する場合は、おそらくStackOverflowで質問する必要があります)

3
スクリプトでの変数の割り当てに「$ {a:-b}」を使用する
私は他の人が書いたいくつかのスクリプト(特にRed Hat)を見てきましたが、それらの変数の多くは次の表記法を使用して割り当てられる VARIABLE1="${VARIABLE1:-some_val}" か、他の変数を展開します VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 値を直接宣言するだけでなく、この表記法を使用する意味は何ですか(例:)VARIABLE1=some_val? この表記法や、防止される可能性のあるエラーには利点がありますか? :-このコンテキストで特定の意味を持っていますか?


6
どうすればbashで2つの数字を追加(減算など)できますか?
私はで数字と操作を読むことができます: echo "First number please" read num1 echo "Second number please" read num2 echo "Operation?" read op しかし、その後、番号を追加する私のすべての試みは失敗します: case "$op" in "+") echo num1+num2;; "-") echo `num1-num2`;; esac 実行: First number please 1 Second mumber please 2 Operation? + 出力: num1+num2 ...または... echo $num1+$num2;; # results in: 1+2 ...または... echo …


5
シェル変数を/ pattern /としてawkに渡す
私のシェル関数の1つに次のものがある: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } として呼び出されると_process $arg、として$arg渡され$1、検索パターンとして使用されます。$1awkパターンの代わりにシェルが展開するため、このように動作します!またl、awkプログラム内で使用することができますを使用して宣言されています-v l="$line"。大丈夫だ。 同じ方法で変数として検索するパターンを与えることは可能ですか? 以下は機能しませんが、 awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" } ' awkが/search/変数として解釈するのではなく、文字通り解釈するため。
59 shell  awk  quoting  variable 

10
インデントしながら複数行にわたって変数に文字列値を割り当てる方法は?
問題: 変数に適切な長さの値を割り当てる必要があります。 スクリプトのすべての行は、特定の列数の下になければなりません。 そのため、複数の行を使用して割り当てようとしています。 インデントなしで行うのは簡単です: VAR="This displays without \ any issues." echo "${VAR}" 結果: This displays without any issues. ただし、インデントがある場合: VAR="This displays with \ extra spaces." echo "${VAR}" 結果: This displays with extra spaces. これらのスペースなしでどのようにエレガントに割り当てることができますか?
54 variable 



3
文字列に部分文字列が含まれているかどうかをテストします
私はコードを持っています file="JetConst_reco_allconst_4j2t.png" if [[ $file == *_gen_* ]]; then echo "True" else echo "False" fi file「gen」が含まれているかどうかをテストします。出力は「False」です。いいね! 問題は、「gen」を変数に置き換えることですtestseq: file="JetConst_reco_allconst_4j2t.png" testseq="gen" if [[ $file == *_$testseq_* ]]; then echo "True" else echo "False" fi これで、出力は「True」になります。どうだった?問題を修正するには?


3
可変コンテンツを読み取るよりもファイルを開くのが速いのはなぜですか?
ではbashスクリプト私はからのさまざまな値必要な/proc/ファイルを。今までは、そのようにファイルを直接grepする数十行がありました。 grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo それをより効率的にするために、ファイルの内容を変数に保存し、それをgrepしました: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' ファイルを複数回開くのではなく、一度開くだけで変数の内容をgrepする必要があります。 bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done …


5
変数に保存されたコマンドを実行するにはどうすればよいですか?
$ ls -l /tmp/test/my\ dir/ total 0 上記のコマンドを実行する次の方法が失敗または成功する理由を疑問に思っていましたか? $ abc='ls -l "/tmp/test/my dir"' $ $abc ls: cannot access '"/tmp/test/my': No such file or directory ls: cannot access 'dir"': No such file or directory $ "$abc" bash: ls -l "/tmp/test/my dir": No such file or directory $ bash -c $abc 'my …
35 bash  shell  quoting  variable 


4
シェル関数のローカル変数の範囲
24.2を読んだ後。ローカル変数、varキーワードで変数を宣言するlocalことvarは、関数の波括弧で区切られたコードブロック内でのみ値にアクセスできることを意味すると考えました。 ただし、次の例を実行した後、私はそれが判明var読み、またアクセスすることができ、関数から書かれたコードのブロックによって呼び出される-すなわちたとえvar宣言されているlocalにouterFunc、innerFuncまだそれを読んで、その値を変更することができます。 Run It Online #!/usr/bin/env bash function innerFunc() { var='new value' echo "innerFunc: [var:${var}]" } function outerFunc() { local var='initial value' echo "outerFunc: before innerFunc: [var:${var}]" innerFunc echo "outerFunc: after innerFunc: [var:${var}]" } echo "global: before outerFunc: [var:${var}]" outerFunc echo "global: after outerFunc: [var:${var}]" 出力: global: before outerFunc: [var:] …

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