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

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

2
チルダを変数の一部として展開するにはどうすればよいですか?
bashプロンプトを開いて次のように入力すると、 $ set -o xtrace $ x='~/someDirectory' + x='~/someDirectory' $ echo $x + echo '~/someDirectory' ~/someDirectory 上記の5行目が表示されることを期待していました+ echo /home/myUsername/someDirectory。これを行う方法はありますか?私の元のBashスクリプトでは、変数xは実際には次のようなループを介して、入力ファイルのデータから入力されています。 while IFS= read line do params=($line) echo ${params[0]} done <"./someInputFile.txt" それでも、のecho '~/someDirectory'代わりに、同じような結果が得られecho /home/myUsername/someDirectoryます。

2
環境変数を設定するコマンドのプレフィックスとして変数を使用できないのはなぜですか?
通常、次のように接頭辞を付けることで、コマンドの環境変数を設定できます。 hello=hi bash -c 'echo $hello' また、変数を使用して、次のようなコマンド呼び出しの任意の部分を置き換えることができることも知っています。 $ cmd=bash $ $cmd -c "echo hi" # equivalent to bash -c "echo hi" 環境変数を設定するコマンドの前に変数を使用できないことを知って、私は非常に驚きました。テストケース: $ prefix=hello=hi $ echo $prefix # prints hello=hi $ $prefix bash -c 'echo $hello' hello=hi: command not found 変数を使用して環境変数を設定できないのはなぜですか?プレフィックス部分は特別な部分ですか?前にevalを使用することで機能させることができましたが、それでも理由がわかりません。bash 4.4を使用しています。

3
空のJSON中括弧をデフォルト値としてエコーするにはどうすればよいですか?
{}envvarがない場合、空のJSON をエコーすることができないようです。}設定されている場合は、出力の末尾が表示されるか、エスケープが表示されます。 bash-3.2$ unset X bash-3.2$ echo "${X:-{}}" {} bash-3.2$ X=y bash-3.2$ echo "${X:-{}}" y} bash-3.2$ echo "${X:-{\}}" y bash-3.2$ unset X bash-3.2$ echo "${X:-{\}}" {\} bash-3.2$ echo "${X:-'{}'}" '{}' bash-3.2$ X=z bash-3.2$ echo "${X:-'{}'}" z どうすれば正しくエスケープできますか?
11 bash  variable 

4
ヒアドキュメントのJSONコンテンツが解析できないのはなぜですか?
JSONフラグメントがあります。 以下は機能しません。 VALUE=<<PERSON { "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" } PERSON echo -n "$VALUE" | python -m json.tool 結果は次のとおりです。 JSONオブジェクトをデコードできませんでした で同じことを行うjq、すなわち echo -n "$VALUE" | jq '.' 出力はありません。 以下についても同じ動作があります。 VALUE=<<PERSON '{ "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" }' PERSON echo -n "$VALUE" | python -m json.tool 応答: JSONオブジェクトをデコードできませんでした しかし、次の作品: …

2
「ローカル」に終了コードをキャプチャさせる方法は?
私のプロジェクトには次のスニペットがあります: local output="$(bash "${1##*/}")" echo "$?" これにより、常に0が出力されますlocalが、削除するlocalと、$?変数が正しく動作します。これは、サブシェルからの終了コードを想定しています。 私の質問は、終了値をキャプチャしながら、この変数をローカルに保つにはどうすればよいですか?

3
変数名で変数を定義する
このスクリプトの何が問題になっていますか?A1 = 1、B1 = 1、C1 = 1を定義しようとしています LIST="A B C" for x in $LIST do "$x"1=1 done 結果は次のとおりです。 ./x.: line 7: A1=1: command not found ./x.: line 7: B1=1: command not found ./x.: line 7: C1=1: command not found

2
単一引用符内で変数を使用する方法
一重引用符に埋め込まれた二重引用符で属性を入力として受け取るアプリケーションがあります。たとえば、次の正しいコマンドを見てください。 command -p 'cluster="cl1"' それを自動化するために$CLUSTER、変数としてを使用してbashファイルを作成しました。私の命令はどうあるべきですか?つまり、cl1の代わりに何を配置すればよいですか。 上記のコマンドを変更すると、受け入れられなくなりますのでご注意ください。たとえば:command -p "cluster=cl1"受け入れられません


4
文字列変数の行数をPOSIXで数える方法は?
私はこれをバッシュでできることを知っています: wc -l <<< "${string_variable}" 基本的に、私が見つけたものはすべて<<<Bashオペレーターに関係していました。 しかし、POSIXシェルで<<<はは定義されておらず、何時間も別のアプローチを見つけることができませんでした。これには簡単な解決策があると確信していますが、残念ながら今のところ見つかりませんでした。

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 ; …

2
変数割り当ての戻りステータスはどのように決定されますか?
私はこのようなスクリプトの構成を見てきました: if somevar="$(somecommand 2>/dev/null)"; then ... fi これはどこかに文書化されていますか?変数の戻りステータスはどのように決定され、コマンド置換とどのように関連していますか?(たとえば、私は同じ結果を得るでしょうif echo "$(somecommand 2>/dev/null)"; thenか?)


2
Bash変数の初期化-必要に応じて、推奨、または定義してください。
メインコードの前、または実際の値を割り当てる前に関数内のローカル変数のいずれかで、スクリプト内のbash変数の値を初期化することのメリット/デメリットはありますか? 私はこのようなことをする必要がありますか? init() { name="" name=$1 } init "Mark" 変数がガベージ値で初期化されて(初期化されていない場合)、変数の値に悪影響を与えるリスクはありますか?
9 bash  variable 

3
アンパサンドを「可変化」する(プロセスのバックグラウンド)
アンパサンドを変数に入れ、それを使用してプロセスをバックグラウンドに送信する方法があるかどうかを知りたいです。 これは機能します: BCKGRND=yes if [ "$BCKGRND" = "yes" ]; then sleep 5 & else sleep 5 fi しかし、これら5つのラインを1つだけで達成するのはクールではないでしょうか。そのようです: BCKGRND='&' sleep 5 ${BCKGRND} しかし、それはうまくいきません。BCKGRNDが設定されていない場合は機能しますが、設定されている場合はリテラル「&」として解釈され、エラーになります。


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