我知道这是一个非常新手的查询,但是在将多条if-else语句单行转换为一元时,我无法弄清楚哪里出了错。
下面是if-else片段:
if [[ ${ENVT} == "right" ]]
then
isRight
else
if [[ ${ENVT} == "left" ]]
then
isLeft
else
if [[ ${ENVT} == "middle" ]]
then
isMiddle
else
if [[ ${ENVT} == "level" ]]
then
isLevel
fi
fi
fi
fi
每个if
条件检查都在调用其各自的功能。这是我尝试进行的转换:
(( ${ENVT} == "right" ? isRight : ${ENVT} == "left" ? isLeft : ${ENVT} == "middle" ? isMiddle : ${ENVT} == "level" ? isLevel : exit ))
我在哪里做错了什么指针?
答案 0 :(得分:1)
这不是您要尝试的那种衬板,但是我发现此语法不错且紧凑,几个月后再回到它时非常容易理解。
#!/bin/bash
[[ ${ENVT} == "right" ]] && isRight
[[ ${ENVT} == "left" ]] && isLeft
[[ ${ENVT} == "middle" ]] && isMiddle
[[ ${ENVT} == "level" ]] && isLevel
答案 1 :(得分:1)
好吧,如果我们要打高尔夫球:
$(command -v "is${ENVT^}"
它大写变量,在is
前面加上,并且仅在它是有效命令时才运行结果。