0
case
ステートメント内のコマンドがこのbashスクリプト内で実行されない理由を突き止めようとしています。bashのcaseステートメントから呼び出されたときにコマンドが実行されない
コマンドラインにコマンドをコピーして貼り付け、値をハードコードすると機能します。 例:スクリプトで 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
なぜコマンドが実行されていませんか?ありがとう。
はい、最後に追加するのを忘れました。それがそれでした。ありがとう! – noober