面试题答案
一键面试- 执行
((a=1+2))
:- 依据:在Bash中,
((...))
是用于整数运算的复合命令。这里先计算1 + 2
的值为3
,然后将3
赋值给变量a
。 - 优先级:
((...))
中的运算优先级遵循常规数学运算优先级,先进行加法运算。
- 依据:在Bash中,
- 执行
&& echo $a
:- 依据:
&&
是逻辑与运算符,当&&
左边的命令(即((a=1+2))
)执行成功(返回状态为0)时,才会执行右边的命令echo $a
。由于((a=1+2))
成功执行,所以会输出变量a
的值,即3
。 - 优先级:
&&
运算符优先级低于((...))
内的运算。
- 依据:
- 由于
echo $a
成功执行,||
右边的命令不执行:- 依据:
||
是逻辑或运算符,当||
左边的命令(即echo $a
)执行成功(返回状态为0)时,不会执行右边的命令{ ((b=3*4)); echo $b; }
。 - 优先级:
||
运算符优先级低于&&
运算符。
- 依据:
- 执行
| grep '5'
:- 依据:
|
是管道运算符,它将左边命令(echo $a
的输出,即3
)作为输入传递给右边的grep '5'
命令。grep '5'
会在输入中查找字符串5
。 - 优先级:
|
运算符优先级低于&&
和||
运算符。由于输入是3
,不包含5
,所以grep '5'
不会输出任何内容,并且返回非零状态码。
- 依据:
综上所述,整个命令先计算并赋值 a
,输出 a
的值,然后因为 &&
左边成功而跳过 ||
右边部分,最后将 echo $a
的输出通过管道传递给 grep '5'
,但 grep
未找到匹配内容。