当我在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
我在弄乱语法的任何想法?我很困惑。
由于
答案 0 :(得分:1)
注意错误消息中$1
是如何消失的?
awk: { sum += } END { print sum }
awk: ^ syntax error
这是因为在shell中,当你用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引用的字符串中时,单引号已经失去了防止变量扩展的神奇力量。
如何修复,逃避$
。不确定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