我想有条件地分配一个变量。
这不起作用
[[ -v $2]] && [$2 == "init" ] && command="./ops/init.sh"
[[ -v $2]] && [$2 == "destroy" ] && command="./ops/teardown.sh"
[ -z "${2}" ] && command="./ops/help.sh -h"
我正在尝试检查参数和另一个条件是否存在,但我无法获得正确的语法
答案1
首先-v
是 zsh 扩展,所以您的问题可能只是错误的 shell 正在执行您的脚本。
编写此内容的正常方法是使用 case 语句。
case "$2" in
("init") command="./ops/init.sh" ;;
("destroy") command="./ops/teardown.sh" ;;
("") command="./ops/help.sh -h" ;;
(*) echo "$0: unknown option '$2' - expecting 'init' or 'destroy'" >&2
exit 2 ;;
esac
将多个单词放入一个字符串中并不是最好的主意,尽管./ops/help.sh -h
您会逃脱它(并且最初对 shell 没有选择)。相反,请考虑使用数组。