是的,这是一个问题,但让我先回答一下。在我经常说BASH脚本的论坛中的某些人是使白痴看起来很好的愚蠢的小技巧。现在我不是BASH程序员,但我想获得标题"我告诉过你"并且通过一致性,坚持性和坚持性证明,任何事都可以实现。
所以这对于一个活跃的项目来说真的没什么,或者我真正没有必要的任何东西,但要证明它可以完成。我也明白我可以使用python,java,ruby等等......我只想继续学习。
显然虽然BASH并不真正有三元支持,但可以通过以下方式实现:
varA=$([ "varB" == "true" ] && echo "$OKSYMB" || echo "$BADSYMB")
基本上就像看起来varA将是$ OKSYMB如果其他任何东西都是$ BADSYMB - 整个互联网上有1000个例子。但是这里有我的问题,如果有3个标志,我知道我可以(我已经这样做了)这样做:
case "$webservermenustatus" in
"disabled") webservermenuicon="$DISABLEDSYMB";;
"true") webservermenuicon="$OKSYMB";;
"false") webservermenuicon="$BADSYMB";;
esac
我很乐意这样做:
webservermenuicon=$([ "$webservermenustatus" == "true" ] && echo -e "$OKSYMB" || [ "$webservermenustatus" == "false" ] && echo -e "$BADSYMB" || echo -e "$DISABLEDSYMB")
奇怪的是它有点工作,虽然$ OKSYMB切断了变量之后的所有内容。另外2个很棒。
我附上5张图片,注意图片编号3对4和5。
绿色OK只是切断菜单项标题的其余部分?
据我所知,案例有效,我可以使用IF THEN ELIF FI,我可以将所有内容设置为TRUE然后将FALSE和DISABLED之间的区别分开,这更多的是看是否有人找到了BASH堆叠的三元运算符。 / p>
答案 0 :(得分:0)
实际上,我只是想通过这个小脚本来解决它:
#!/bin/bash
status=$1
switchstatus=$([ "$status" == "true" ] && echo "TRUE" || ([ "$status" == "false" ] && echo "FALSE" || echo "DISABLED"))
echo "You have made a $switchstatus choice in your life"
我需要将三元的第二部分放在()中 - 现在解释为什么会发生这种情况,当你将结果回显给变量时,没有括号它正在响应
你做的是真的 生活中错误的选择
发送TRUE和下一个&&一起 一旦它与()分开,它将只发送第一组&&到变量。
- 有时简单是你的敌人:)