問題タブ [variable-expansion]
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.
bash - 代替値展開で文字列を bash 変数名として使用する
bashの代替値展開( ${var+alt}
)で、ある変数の値を別の変数の名前として使用するにはどうすればよいですか?
私はそう思うだろう
とほぼ同等である必要があります
しかし、これをやろうとすると、
問題の一部は、コマンド置換を行うサブシェルが$varname
もう知らないことだと思いますか? その変数をエクスポートする必要がありますか?
これを行う理由は、変数が null であるかどうかを確認する方法をこの回答から学び、次のように という関数でそのチェックをカプセル化しようとしているからですis_null
。
shell - zsh リダイレクトとパラメータ展開
プログラム P を呼び出すシェルスクリプト S を書いています。
P は stdin からの入力のみを受け入れます。
私のスクリプト S のパラメーターの 1 つはオプションです。パラメータが存在する場合、それは P に供給されるべきファイルを示します。パラメータが欠落している場合、S の標準入力が P に供給されるべきです。
これはそれを解決するための私の試みでした:
アイデアは次のとおりです。(3番目の)パラメーターがファイル名の場合、たとえばfoo、実行する必要があります
ただし、見つからないか空の場合は実行する必要があります
私の理解では、これは単に
つまり、標準入力から読み取ります。ただし、これは機能しません。<&0 を文字通り使用している間、次のように機能します
スクリプトで実行している方法で使用すると、エラー メッセージno such file or directory: &0が生成されます。これは私を驚かせます.zshのmanページから、リダイレクトを設定する前にパラメーターの展開が発生することを理解しています。
もちろん、私はトリックを使うことができました
しかし、これはあまりエレガントに見えません。
なぜ私のアプローチがうまくいかなかったのか、ここで使用するのに適したイディオムは何ですか?
macos - Mac OSX ターミナルで ls -1 を変数に展開する方法
Mac OS X ターミナルで bash シェルを使用して、現在のディレクトリ内のすべてのファイル名を 1 行に 1 つの名前 (基本的には ls -1 の出力) で変数に入れたいと考えています。しかし、もしそうなら:
変数 'var' には、すべてのファイル名が含まれていますが、1 行にスペースで区切られています。どうすればこれを修正して、欲しいものを手に入れることができますか。より一般的には、この動作の理由は何ですか? ls -1 の展開中に何が起こっていますか?
次のようにしてファイル内に必要なものを入れることができることを認識していますが、変数を使用して同じ結果を達成したいと考えています。
前もって感謝します。
bash - シェル:このGrep構造でUDVを問題なく使用するには?
与えられた数よりも長い単語の数を画面に出力するように要求する割り当てがあります。たとえば、 k としましょう。これはキーボードから読み取られます。そして、結果を注文します。今まで私はこの方法で試すことにしました:
私の問題は、「egrep -o '[^]{k,}'」セクションで k を使用してこのプログラムを試すたびに、常に間違った答えが返されることです。しかし、それを整数に置き換えると、 in は思い通りに機能します。キーボードから読み取った k に対してこのコードを機能させる正しい方法はどれですか? これは構文であり、そこにどのように記述すればよいか本当に理解できず、他の方法で "$k" 、 $k 、 ((k)) 、k
. どんな助けでも大歓迎です、誰かが私にくれたらヒントをください? ハマった
bash - サブシェルでのシェル分割
シェルとサブシェルでの単語分割について、不明な情報があります。
例:
$file_name
サブシェルで分割されますか? または、次のように二重引用符で囲む必要がありますか?
いくつかのテストの後、次のことがわかりました。
- を設定する
IFS=" "
と、$file_name
スペースで分割されます - その場合
IFS=""
、全体$file_name
が最初のパラメーターとして渡されます。
これまでのところ、ksh、dash、および bash はすべてこの動作を示しています。
perl - 両方のパイプを使用し、perl システム関数でシェルの拡張を防ぐ方法は?
複数の引数が perl のシステム関数に渡された場合、シェル展開は機能しません:
コマンドが 1 つの引数として渡された場合、展開は機能します。
システム機能では、複数のコマンドを使用し、パイプを使用してそれらを接続することもできます。これは、引数が 1 つのコマンドとして渡された場合にのみ機能します。
上記のコマンドを組み合わせて両方のパイプを使用し、シェルの拡張を防ぐにはどうすればよいですか?
私が試してみました:
しかし、これは上で説明した理由により機能しませんでした (複数の引数は展開されません)。私が望む結果は次のとおりです。
編集:私が実際に直面している問題は、次のコマンドを使用する場合です:
次に、$email_message が展開され、シェルによってさらに展開される文字が含まれていると、mailx が壊れます。