我在solaris 11中運行腳本,其結果取決於使用的shell。重定向回聲與未定義的變量
腳本有迴音重定向至一個環境值給出一個文件:
echo "STARTING EXEC" >> $FILE
PS。 EXEC只是腳本顯示的消息,它不使用exec
命令。
如果我執行該腳本而無需(使用/usr/bin/ksh
)中定義的變量FILE:
./start.sh[10]: : cannot open
和腳本繼續執行。
使ksh的標誌是:
echo $-
imsuBGEl
但如果我更改爲/usr/xpg4/bin/sh
,劇本給我看在標準輸出回波並沒有顯示錯誤。
爲XPG4 SH的標誌是:
echo $-
imsu
我試圖改變標誌與set +-
(我不能刪除薩爾瓦多標誌,但BG被刪除OK),但不能獲得相同的行爲。
有沒有什麼我可以做到使用ksh得到相同的結果而沒有cannot open error
?
/usr/bin/ksh --version
version sh (AT&T Research) 93u 2011-02-08
我希望腳本繼續下去,顯示標準輸出消息,而不是顯示就像現在這樣的錯誤。
就像在評論中說的shellter一樣,好的事情是在做任何事之前檢查FILE變量是否被定義。這是一個從HPUX
到SOLARIS
環境的腳本migration
,並且客戶端認爲它們必須具有與以前相同的結果(我們在執行之前未設置FILE變量來測試它)。
'$ {FILE:?_ Var_FILE_NOT_SET}'可能有幫助。祝你好運。 – shellter
感謝評論shellter。問題是,不僅有一個腳本,有超過一千(我的錯,我沒有解釋得很好,對不起),我不知道我是否允許改變它們。 –
啊,1000s的文件修改,這是有所作爲;-) ...讓我們回到基礎。我不太瞭解你的'/ usr/xpg4/bin/sh,腳本在stdout中顯示回顯,並且沒有錯誤。所以你看到'STARTING EXEC'?是?而在ks93中,腳本停止在那一點,還是隻是錯誤消息'./start.sh[10]::無法打開'。劇本是否會繼續運行?請編輯您的問題,告訴我們'我希望腳本停止'或'我希望腳本繼續前進'。最後,正如msg提到EXEC,你使用的是shell命令'exec'。如果是這樣,請包括確切的cmd – shellter