,變量ECHO_ALL是一個全球性的,並設置爲「是」或「否」的基礎上選擇輸入解析。經過了完全bash腳本行到另一個bash的功能,在下面的BASH代碼執行
---開始的〜/腳本/ util的/ util-optout.sh ---
########################################
# @param [email protected]
# @return the return value from [email protected]
# @brief A wrapper function to allow
# for OPTional OUTput of any
# command w/wo args
#######################################
optout()
{
if [ ${ECHO_ALL} = 'no' ]; then
"[email protected]" 1>/dev/null 2>&1
return $?
else
"[email protected]"
return $?
fi
}
---文件結束---
在另一個bash的文件I源上面的util-optout.sh文件,並使用optout()函數來允許條件輸出..實質上允許將輸出到/ dev/null的任何命令進行條件重定向以使腳本保持沉默。
例如在一些其他的構建腳本我有
source ~/scripts/util/util-optout.sh
optout pushd ${ZLIB_DIR}
optout rm -vf config.cache
optout CC=${BUILD_TOOL_CC} ./configure ${ZLIB_CONFIGURE_OPT} --prefix=${CURR_DIR}/${INSTALL_DIR}
# ^^^^^^^^^^^^^^^^^^^
# ^this breaks my optout() command
# my optout() fails when there are prefixed bash env vars set like CC=${...} before ./configure
optout popd
optout make -C ${ZLIB_DIR} ${ZLIB_COMPILER_OPT} all
optout make -C ${ZLIB_DIR} install
爲簡單的命令與像「PUSHD」或之後的任何類型的參數「RM」 ..選擇禁用()的偉大工程。 即使退出使-C工作正常。
,但它給我的錯誤有前綴的env-瓦爾設置,如選擇禁用CC = $ {...}的./configure ...
utils的/ util-optout.sh命令:行33 :CC = GCC:找不到命令
有沒有辦法讓我的選擇禁用()函數適用於任何可能的有效bash腳本行。
我知道它與我的optout()函數中使用「$ @」或「$ *」有關,但我已經詳細研究了bash手冊頁,並且我無法使其適用於所有可能的bash行情況。
到目前爲止突破這個限制我的選擇禁用(唯一的方法)是以下3線式的;這很煩人。
export CC=${BUILD_TOOL_CC}
optout ./configure ${ZLIB_CONFIGURE_OPT} --prefix=${CURR_DIR}/${INSTALL_DIR}
unset CC
如何降低這一切回落到一個單一的選擇禁用任何想法...線
哇..我已經明顯被這個問題盯着長期看從樹木,不見森林! –