2

bash ターミナルでこのコマンドを実行すると、次のように動作します。

awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt

しかし、これを実行すると:

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"

それは動作しません。' を \' に変更してみましたが、うまくいきません。

次のエラーが表示されます: 最初のケース:

awk: { sum +=  } END { print sum }
awk:           ^ syntax error

\' を使用した場合

awk: '{
awk: ^ invalid char ''' in expression

構文を台無しにしているアイデアはありますか? 私はかなり困惑しています。

ありがとう

4

1 に答える 1

1

$1エラー メッセージで が消えていることに気付きましたか?

awk: { sum +=  } END { print sum }
awk:           ^ syntax error

これは、シェルでは、最初に何かを dbl-quotes で引用すると、

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"

${var} 参照はすべてその値に展開されます。単一引用符は、dbl 引用符で囲まれた文字列内にある場合、変数の展開を防ぐ魔法の力を失いました。

修正方法は、あなたの s をエスケープします$。bsubが何であるかはわかりませんが、これでうまくいくはずです:

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += \$1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"
# -------------^^^

IHTH

于 2012-10-19T17:43:30.677 に答える