非法变量名tcsh shell linux

时间:2017-05-01 19:22:58

标签: linux csh tcsh

我的一个shell脚本中的以下一行出现“非法变量名称”错误 -

"$WORKING_DIR"/sendEmail.py "$TEST_STRING, Tests passed" "$(cat "$WORKING_DIR"/logs/"$THE_PACKAGE"/testResults.out)" >& "$WORKING_DIR"/logs/mailOut.txt

我认为错误来自以下行:

"$(cat "$WORKING_DIR"/logs/"$THE_PACKAGE"/testResults.out)"

我在互联网上广泛关注,但还未能解决问题。

2 个答案:

答案 0 :(得分:1)

$()语法在csh中无效,只能在Bourne shell中使用,例如/ bin / sh,ksh,zsh,bash等。对于csh,你只能使用反引号({ {1}})。

最好引用整个路径名而不仅仅是变量:`而不是"$var/logs";没有真正的理由不去; - )

将它们放在一起,加上一些可读性换行符,我们得到:

"$var"/logs

话虽如此,如果您编写此Python脚本,最好修改它以便从stdin读取:

"$WORKING_DIR/sendEmail.py" "$TEST_STRING, Tests passed" \
    "`cat "$WORKING_DIR/logs/$THE_PACKAGE/testResults.out"`"\
    >& "$WORKING_DIR/logs/mailOut.txt"

答案 1 :(得分:-1)

试试这个:

ZZZ = $(cat" $ WORKING_DIR / logs / $ THE_PACKAGE / testResults.out")

" $ WORKING_DIR" /sendEmail.py" $ TEST_STRING,测试已通过" " $ ZZZ" >&安培; " $ WORKING_DIR" /logs/mailOut.txt

或者
ZZZ = `cat "$WORKING_DIR/logs/$THE_PACKAGE/testResults.out"`