繁体   English   中英

非法的变量名称tcsh shell linux

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM