簡體   English   中英

從bash中的case語句調用時,命令未執行

[英]command not executing when called from a case statement in bash

我陷入困境,並試圖解決為什么case語句中的命令無法在此bash腳本中執行的問題。

如果我將命令復制並粘貼到命令行中並對其進行硬編碼,它將起作用。 示例: psql -h mycluster-1.us-east-1.redshift.amazonaws.com -U masteruser -d dev -p 5439 -v v1="foo_bar" -f getTableDetails.sql

在腳本中,我將命令括在括號內以解決可能的空白問題:

    #!/usr/local/bin/bash

    set -e
    set -x


    cluster_to_endpoint() {
      case "$1" in
        c01)
          RUNCMD=$(psql -h mycluster-1.us-east-1.redshift.amazonaws.com -U masteruser -d dev -p 5439 -v v1="$NAME" -f getTableDetails.sql)
          ;;
        c02)
          RUNCMD=$(psql -h mycluster-2.us-east-1.redshift.amazonaws.com -U masteruser -d dev -p 5439 -v v1="$NAME" -f getTableDetails.sql)
          ;;
      esac
    }


    while getopts ":c:n:" opt; do
      case $opt in
        c) cluster="$OPTARG";;
        n) name="$OPTARG";;
        *) usage
           exit 1
           ;;
      esac
    done

我正在像這樣執行腳本: ./myscript.sh -c c01 -n foo_bar

我也嘗試過只刪除()

c01) 
   psql -h mycluster-2.us-east-1.redshift.amazonaws.com -U masteruser -d dev -p 5439 -v v1="$NAME" -f getTableDetails.sql;;

看起來變量已設置。

$ ./myscript.sh -c c01 -n foo_bar
+ getopts :c:n: opt
+ case $opt in
+ cluster=c01
+ getopts :c:n: opt
+ case $opt in
+ name=foo_bar
+ getopts :c:n: opt

那為什么命令不執行呢? 謝謝。

未執行的命令位於函數cluster_to_endpoint ,該函數從未調用過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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