如何在一行中写这个而不创建额外的变量和重复“5”?
A=5
B=10
([[ $A == B ]] && echo $A) || echo gt
答案 0 :(得分:3)
A=5; B=10; ([[ $A == B ]] && echo $A) || echo gt
您可以按;
...
但对大多数情况来说,这是不必要的。通过构建代码,可以更深入地了解其工作原理。
答案 1 :(得分:2)
echo gt
这只是一行,并没有引入任何变量。
顺便说一下 - 使用它的是什么?
答案 2 :(得分:0)
你不需要围绕bash测试的括号和语句:
A=5; B=10;
[[ $A -lt $B ]] && echo $A || echo "A >= B"
如果你对批量感到不安,那么使用bash更难以实现它。但是由于你正在使用bash,你可以使用其他程序,例如python:
A=5; B=10;
python -c "print $A if $A < $B else 'A >= B'"
或Perl:
A=5; B=10;
perl -le "print $A < $B ? $A : 'A >= B';"
无论选择何种语言,所有人都在执行类似的任务。在这种特定情况下,perl示例是“最轻”。但请注意,Perl和Python可能不是最便携的。如果可移植性是个问题,而您不喜欢Bash,请考虑使用awk:
A=5; B=10;
awk "BEGIN{print $A < $B ? $A : \"A >= B\"}"