[英]bash: expanding function arguments
我正在編寫的Shell腳本的bash函數存在問題。 功能如下:
do_command() {
if [[ $DRY_RUN ]]; then
echo $@
else
$@
fi
}
功能很簡單,如果設置了DRY_RUN標志,我們只打印該方法,否則將執行它。 對於大多數命令,除了我嘗試過不同版本的git tag命令,該命令都適用:
do_command git tag -a $NEW_VERSION -m '$INPUT_COMMENT'
實際上執行了tag命令,但給出了注釋$ INPUT_COMMENT
我嘗試了其他2個版本,這些版本提供了正確的回聲輸出,但不允許我執行git tag命令。
do_command git tag -a $NEW_VERSION -m "$INPUT_COMMENT"
和
do_command git tag -a $NEW_VERSION -m "\"$INPUT_COMMENT\""
有什么方法可以使echo和git命令在此調用中起作用? 還是我需要解析do_command版本?
使用帶引號的"$@"
可以正確處理帶有空格的參數。 如果您只寫$@
則當$INPUT_COMMENT
包含空格時, git
命令將不起作用。
do_command() {
if [[ $DRY_RUN ]]; then
echo "$@"
else
"$@"
fi
}
用法:
do_command git tag -a $NEW_VERSION -m "$INPUT_COMMENT"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.