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

这是因为在 shell 中,当您使用 dbl-quotes 引用 FIRST 时,就像您所做的那样

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 回答