簡體   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