以下に示すように、コマンド置換は引用されたコマンドライン引数の解釈を変更します。フードの下で何が起こっていますか?回避策がありますか?コマンド置換は引用符で囲まれた引数を空白で区切ります
$ cat dumpargs.sh
#! /usr/bin/env bash
for i in "[email protected]"
{
echo "$i"
}
$ cat testfile.txt
'1 space' '2 space'
$ ./dumpargs.sh $(cat testfile.txt) ## produced undesired output
'1
space'
'2
space'
$ ./dumpargs.sh '1 space' '2 space' ## produces desired output
1 space
2 space
http://shellcheck.net/はあなたの問題(文字列分割につながる引用符の欠如)を捕まえていました。リテラル*引用符(文字列分割に影響しない)が*構文的なものとして扱われるという期待はおそらくより大きな問題です。 –
これは[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050)とも非常に関連しています。 –
'xargs':' cat testfile.txt | xargs。/ dumpargs.sh' – nobar