我的一个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)"
我在互联网上广泛关注,但还未能解决问题。
答案 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"`