換句話說,我要製作成一個班輪這一點:猛砸一個班輪 - 測試文件是否存在和來源,如果它的其他出口,錯誤
test -e ${MY_HOME}/setup-env.sh || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; }
. ${MY_HOME}/setup-env.sh
換句話說,我要製作成一個班輪這一點:猛砸一個班輪 - 測試文件是否存在和來源,如果它的其他出口,錯誤
test -e ${MY_HOME}/setup-env.sh || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; }
. ${MY_HOME}/setup-env.sh
您可以使用這一個班輪:
[[ -e "${MY_HOME}/setup-env.sh" ]] && source "${MY_HOME}/setup-env.sh" || { echo "ERROR: MY_HOME not defined or does not contain srtup-env.sh" 1>&2 ; exit 1; }
如果'source「$ {MY_HOME} /setup-env.sh」'以非零狀態碼結束,這也會運行該消息。 – konsolebox
是的,這是很好的一點,我認爲這是所有這一切的一個陷阱。很明顯,源代碼「$ {MY_HOME} /setup-env.sh」不能在子shell中完成。 – anubhava
[[ -e ${MY_HOME}/setup-env.sh ]] && { source "${MY_HOME}/setup-env.sh"; exit; }; echo "ERROR: MY_HOME not defined or does not contain setup-env.sh" >&2; exit 1
或者,如果非擊:
test -e "${MY_HOME}/setup-env.sh" && { . "${MY_HOME}/setup-env.sh"; exit; }; echo "ERROR: MY_HOME not defined or does not contain setup-env.sh" >&2; exit 1
它實際上對我來說並不是一蹴而就的,而只是一種濃縮的形式。
可以在一行上做到這一點,但爲什麼你想要?爲此使用函數將更易於閱讀,並且每次使用時都不需要打字。 –
對我來說,真正的單線是那些通過一個不間斷的命令實例完成所需的任務。而且我看到那些使用分隔符的像';'沒有資格被稱爲這樣的。 – konsolebox