如何在bash中用一行写这个

时间:2014-12-31 17:00:42

标签: linux bash shell

如何在一行中写这个而不创建额外的变量和重复“5”?

A=5
B=10
([[ $A == B ]] && echo $A) || echo gt

3 个答案:

答案 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\"}"