2014-02-24 33 views
0
echo "Hello" > $XYZ 

echo ${?} 

如果我複製粘貼這兩行在任何.sh文件腳本工作正常沒有任何問題。 ${?}在第二行中返回0. $XYZ可以用任何隨機字符串替換。該變量不需要定義或初始化。這個ksh代碼是如何工作的?

但是,相同的代碼不適用於某些用戶。第一行是拋出錯誤「scriptname.sh[425]: : cannot open」。

在第二行${?}將返回1.

爲什麼同一段代碼是給不同用戶的不同結果的任何想法?

注:我們都面臨這個問題,在服務器「IBM/AIX RISC系統/ 6000」

+0

「Linux代碼」沒有這樣的東西。你是說Bash?或者是什麼? –

+0

shell是ksh。 – user3330037

+0

所以這是一個ksh編程問題。請相應修改標題和標籤。謝謝 –

回答

0

變量XYZ需要,以保持一個非空字符串的外殼,能夠解析重定向。如果你希望它默認沒有任何結果(這是我想象的你可能期望重定向沒有任何東西可以完成,但它不會),也許將它初始化爲/dev/null

+0

剛纔我通過執行下面的命令進行了測試,並且所有代碼都運行正常,沒有任何錯誤。 回聲 「測試」> $ XROELRLER 回聲 「測試」> $ EROOTRTUEROOOROEOREOREORO 回聲 「測試」> $ OOEREMREOEREREOR 回聲 「測試」 上述變量的 沒有定義任何地方>的/ dev/null的。他們都是隨機的名字。但是,我注意到在終端打印「測試」的前3行,但是在我使用/ dev/null的4行中沒有打印字符串「測試」。 如果變量爲空,是否有任何Linux設置會忽略文件重定向? – user3330037

0

確保以正確的格式寫入XYZ的賦值語句。例如:

XYZ="fileName" 
echo "Hello" > $XYZ 
... 

XYZ =「文件名」是沒有空格..我不知道,但是這是來到我的腦海

+0

我明白,但我的問題是不同的。如果我執行命令「echo」Hello「> $ RANDOM_STRING」,操作系統不會拋出任何錯誤。這裏,$ RANDOM_STRING是未定義的隨機變量。我想了解這是如何發生的。 – user3330037

0

我會想象日誌文件的唯一問題($ XYZ)是AIX中的不同用戶不能訪問,請嘗試給755以日誌文件目錄,並確保您的文件具有足夠的權限以供其他人執行(755再次)

+0

$ XYZ是一個隨機未定義的變量。我可以用任何隨機值($ XEREOER,$ DOREORLR,$ EROEROERO等)替換$ XYZ。該腳本正在工作。我想了解爲什麼操作系統不會拋出錯誤。什麼Linux設置是抑制錯誤? – user3330037

+0

我會說你應該使用日誌技術的通用方式,通過定義它的日誌名稱字符串.. – Guru