[英]Illegal variable name tcsh shell linux
我的一个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)"
我已经在互联网上进行了广泛的研究,但仍无法解决问题。
$()
语法在csh中无效,仅在Bourne shell(例如/ bin / sh,ksh,zsh,bash等)中有效。对于csh,您只能使用反引号( `
)。
最好也引用整个路径名,而不只是引用变量: "$var/logs"
而不是"$var"/logs
; 没有真正的理由不;-)
结合起来,再加上一些新的可读性换行符,我们得到:
"$WORKING_DIR/sendEmail.py" "$TEST_STRING, Tests passed" \
"`cat "$WORKING_DIR/logs/$THE_PACKAGE/testResults.out"`"\
>& "$WORKING_DIR/logs/mailOut.txt"
话虽如此,如果您编写了此Python脚本,则最好对其进行修改,以使其从stdin中读取:
cat "$WORKING_DIR/logs/$THE_PACKAGE/testResults.out" | \
"$WORKING_DIR/sendEmail.py" "$TEST_STRING, Tests passed" \
>& "$WORKING_DIR/logs/mailOut.txt"
尝试这个:
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"`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.