これは明らかにSSCCEなので(それ自体では)意味がありません。たとえばY
、この最小例では変数の割り当ては使用されません。私は実際の状況に合った正しい構文を見つけようとしています。
Bashシェルから直接次のことができます。
Y=10 echo foo
bashファイルに以下を含めることもできますfoo.sh
。
#!/bin/bash
X="echo foo"
$X
...その後、次を実行します。
$./foo.sh
foo
ただし、bashファイルに次のものがある場合:
#!/bin/bash
X="Y=10 echo foo"
$X
...その後、次のような結果が出ます。
$ ./foo.sh
./foo.sh: line 3: Y=10: command not found
上記の正しい構文は何ですか?
ベストアンサー1
問題は、オプションのパラメータ割り当てが認識されることです。今後パラメータ拡張が発生したため、行
$X
以前の割り当てがないコマンドとして認識されます。拡張結果の最初の単語がコマンド名であると仮定するので、シェルはY=10
。
通常、コードを変数に保存せずに関数に保存する必要があります。
X () {
Y=10 echo foo
}