2
我有一個bash腳本,我執行/bin/sh -xe script.sh
,我需要捕獲它的輸出。如何在使用-xe執行bash腳本時隱藏env變量?
問題是,在腳本內部我使用了一些ENV變量,我想讓它們不顯示在輸出中。 有沒有辦法做到這一點?
即,如果我的腳本有touch $MY_ENV_VAR
和MY_ENV_VAR = ok,則/bin/sh -xe script.sh
的輸出將爲touch ok
。
有沒有辦法讓env vars在-x
的輸出中被替換?所以我只會得到+ touch $MY_ENV_VAR
。
POSIX標準中沒有任何內容允許這樣做。你所能做的就是在你不想顯示的代碼周圍設置+ o xtrace,然後設置-o xtrace。或者,使用'verbose' trace而不是'xtrace',這就是'-v'選項。順便說一句,如果你正在使用'/ bin/sh'執行,那麼它不是一個bash腳本,而是'sh'腳本。 – cdarke
嘗試使用'sh -vex' - 您將在輸出中獲得另一行如何讀取腳本文件('-v')。很難閱讀,但有時可能會有用。 – jm666
謝謝。使用'set -ve'而不是'set -xe'似乎有訣竅。你可以發佈這個答案,以便我可以接受嗎? – daniels