如何正确创建case语句以将别名映射到值

时间:2016-04-26 18:07:53

标签: bash shell unix case

我正在试图找出创建此case语句。我要做的是映射我的输入参数$1,它必须是3个选项之一,然后映射到主机名。我的命令失败了。如何将变量赋值给?这样做的最佳方式是什么?

执行:

./test.sh cluster1

示例:

#!/bin/bash
ENDPOINT="$1"
SCH="$2"

case $ENDPOINT in
        "cluster1") $HOST="myhost1.abcde.us-west-1.amazonaws.com";;
        "cluster2") $HOST="myhost2.abcde.us-west-1.amazonaws.com";;
        "cluster3") $HOST="myhost3.abcde.us-west-1.amazonaws.com";;
esac

psql $HOST -U myuser -d $SCH -p 5439 << EOF

获取错误:

/test.sh: line 18: =myhost1.abcde.us-west-1.amazonaws.com: command not found

2 个答案:

答案 0 :(得分:3)

如果您在进行作业时删除webix.ui({ view:"datalayout", rows:[ { name:"$value", type:"header", template:"#panel#" }, { name:"any", view:"grouplist", template:"#value#" }, ], data:[ { panel:"1", any:tree_data }, { panel:"2", any:cars_data } ] }); 变量之前的$,则会有效。

HOST

还尝试使用getopts以获得更好的可伸缩性。

答案 1 :(得分:-2)

您应该像这样更改案例陈述:

HOST=$(case $ENDPOINT in
    "cluster1") echo "myhost1.abcde.us-west-1.amazonaws.com";;
    "cluster2") echo "myhost2.abcde.us-west-1.amazonaws.com";;
    "cluster3") echo "myhost3.abcde.us-west-1.amazonaws.com";;
esac)

现在无法测试,让我知道它是否有效。