我有這樣的:如何保存cd的返回值?
cd $dir
if[ $? -eq 0 ]; then ...
else echo "The directory doesn't exist"; exit -1;
fi
而我想的是,如果CD返回一個錯誤(1號線),誤差不會被shell中顯示。我只想顯示我寫的信息。 我試過:
ret=$(cd $dir)
但是這並不奏效。我該怎麼做?
我有這樣的:如何保存cd的返回值?
cd $dir
if[ $? -eq 0 ]; then ...
else echo "The directory doesn't exist"; exit -1;
fi
而我想的是,如果CD返回一個錯誤(1號線),誤差不會被shell中顯示。我只想顯示我寫的信息。 我試過:
ret=$(cd $dir)
但是這並不奏效。我該怎麼做?
if cd $dir 2> /dev/null; then ...; else echo "The directory doesn't exist"; exit -1; fi
cd $dir 2>/dev/null || { echo "The directory doesn't exist"; exit -1; }
...
如果目錄確實存在,但劇本沒有權限進入它,然後你正在嘗試做的是迷惑用戶。如果您的意圖是混淆用戶,那麼繼續使用提供的其他答案。但你真的想要做的是讓CD發出錯誤信息,只是寫:
cd $dir || exit 255
嘗試,當你完全不知道發生了什麼錯誤只是導致混亂打印錯誤消息。
'$(...)'語法捕獲命令的*輸出*,而不是其狀態。 – 2011-12-31 20:59:49
感謝您的澄清。 – LiLou1 2011-12-31 21:44:38
其實,你不想打印你的信息。你真的更喜歡cd發出錯誤信息。錯誤可能不是該目錄不存在,在這種情況下,您的錯誤消息不正確。只需寫:cd $ dir ||退出-1。 (或者只是設置-e) – 2011-12-31 21:45:51