非法变量名 tcsh shell linux

Illegal variable name tcsh shell linux

我的 shell 脚本中的以下一行出现 "Illegal variable name" 错误 -

"$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)"

我在网上查了很多资料,还是没能解决这个问题。

试试这个:

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

"$WORKING_DIR"/sendEmail.py "$TEST_STRING,测试通过" "$ZZZ" >& "$WORKING_DIR"/logs/mailOut。文本文件


ZZZ=`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 脚本,最好对其进行修改,使其从标准输入读取:

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