問題タブ [command-substitution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
242 参照

bash - bashでチルダ展開と変数置換を組み合わせる

root として bash を実行していて、ユーザーのホーム ディレクトリを chown したいとしますadaadaという変数に格納されているとも言います$USER(これはスクリプトから実行しているためです)。

以下を試したところ、

/home/root/adaシェルは最初にチルダ展開を実行したため、 ではなくchown を試みました/home/ada

ネストされた置換と適切なエスケープでそれを行う方法はありますか?

0 投票する
1 に答える
49 参照

bash - 空白で区切られた一連の単語ではなく、単一の文字列として STDOUT をパイプ/消費する

正規表現置換を使用して結果のファイル名を計算する perl ワンライナーを採用したいと思います。ドライランを実行して結果を単に印刷すると、望ましい結果が得られます(まだ引用符はありません):

for i in *_\ *; do echo "${i}" $(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}"); done

しかし、それに変更するmvと壊れます:

for i in *_\ *; do mv "${i}" $(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}"); done

mv: target ‘9781430249146.pdf’ is not a directory

どうやら perl の出力が再解釈され、空白が問題を引き起こしているようです。二重引用符で囲むと、perl コードが最初に bash によって評価されるため、別の問題が発生します。

for i in *_\ *; do mv "${i}" "$(perl -ne 'print s/(?<![_ ])_ /-/gr' <<< "${i}")"; done

-bash: ![_: event not found

(コマンド自体ではなく) コマンド置換からの出力だけを引用する方法はありますか?

0 投票する
3 に答える
4207 参照

bash - 文字列置換によるコマンド置換

次の行に沿って何かをすることは可能ですか:

そのようなものの実際の例をどこかで見たと確信していますが、これにより「不適切な置換」エラーが発生します。

それを行うには他の方法があることは知っていますが、そのような短いワンライナーは役に立ちます。私は何かを逃していますか、それともこれは不可能ですか?

0 投票する
1 に答える
53 参照

bash - bash コマンド置換内からのスクリプト ロジック

スクリプトに次のスニペットがあります。

他の場所では、ファイル記述子を介して PIN を渡す必要があるため、ここではリダイレクトとコマンド置換を行います。

の出力validate_pinは、入力された PIN の変更された値ですが、終了コードによって、それが成功して有効であったかどうかが決まります。error_handler障害を管理するために何を入れることができますか?

私が持っている場合exit、コマンド置換サブシェルのみを終了します。コマンド置換サブシェルが閉じられるとすぐに、割り当てられた変数 (FAIL=1など) も消去されます。ファイル記述子を読み取って動作を確認することはできますが、その後閉じられ、後続のプロセスはそれを使用できません。

0 投票する
3 に答える
419 参照

bash - Bash IFS ('\n'): find コマンドと for ループによるファイル名検出の問題

コマンド置換は正しく行われていますか? 変数は for ループの IFS \n では機能しません。なぜこれが発生するのかわかりません。

for ループは、find の出力を行ごとに処理することにより、空白を含むファイル名を処理することになっています (これが、IFS \n を使用する理由です)。

0 投票する
1 に答える
145 参照

bash - コマンド置換を使用するスクリプト/コマンド/エイリアスの追加

実行できるようにしたいコマンドがあり、通常は Mac の起動時に実行します。私がやろうとしていた方法は、でエイリアスを作成することでした~/.bash_profile:

boot2docker shellinit実行する必要があるいくつかのコマンドを出力します。例えば:

私が抱えている問題は、新しいシェルが開かれたときに$(boot2docker shellinit)が実行され、上記のexportコマンドも実行されるか、boot2docker VM がアクティブでない場合に失敗することです。

これを整理する正しい方法 (エイリアス、スクリプトなど) と、コマンド置換を使用することが正しい方法である場合はどうすればよいですか?

0 投票する
1 に答える
133 参照

bash - Bash での tty のコマンド置換

指示:

出力:

指示:

出力:

現在の端末に接続されているファイルは/dev/pts/0です。両方のコマンドが同じ出力を生成するべきではありませんか? ここで何が欠けていますか?