我在 Linus 中運行一個 shell 腳本,但我有一個意外的行為。
bash-4.2$ echo $TOOLBOX_ROOT
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools
bash-4.2$ export REALSCRIPT="$TOOLBOX_ROOT/sh/dbSchemaSetup.sh"
bash-4.2$ echo $REALSCRIPT
/sh/dbSchemaSetup.shbank/tools/3rd_Party/ettools
看起來它不是連接兩個字串,而是在開頭附加資料。
有什么建議嗎?
問候
uj5u.com熱心網友回復:
當設定 TOOLBOX_ROOT 的值時,它的末尾有一個回車符 ( $'\r')。結果,REALSCRIPT 變數的值現在是:
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools\r/sh/dbSchemaSetup.sh
...當 you 時echo $REALSCRIPT, the\r被解釋echo為回車,意思是:將游標移動到行首。結果,可視輸出為“/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools”,但在開頭被“/sh/dbSchemaSetup.sh”覆寫。
最好的選擇是防止\r被包含在 TOOLBOX_ROOT 的分配中。
第二好的選擇是在分配后立即將其洗掉,例如:
TOOLBOX_ROOT=${TOOLBOX_ROOT/%$'\r'/}
...這將洗掉該變數末尾的任何回車符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439535.html
