簡體   English   中英

bash:擴展函數參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM