我有一个打印多行的命令,我确实想将第二行放入 bash 变量中。
喜欢echo "AAA\nBBB"
,我想要一个 bash 命令,它会放入BBB
一个 bash 变量。
与sed
:
var=$(echo -e "AAA\nBBB" | sed -n '2p')
与awk
:
var=$(echo -e "AAA\nBBB" | awk 'NR==2')
然后简单地回显您的变量:
echo "$var"
调用read
两次:
echo -e "AAA\nBBB" | { read line1 ; read line2 ; echo "$line2" ; }
请注意,您需要{}
确保两个命令都获得相同的输入流。此外,在 之外无法访问变量{}
,因此这不起作用:
echo -e "AAA\nBBB" | { read line1 ; read line2 ; } ; echo "$line2"
您可以使用sed
:
SecondLine=$(Your_command |sed -n 2p)
例如:
echo -e "AAA\nBBBB" | sed -n 2p
根据要打印的行更改数字。
使用带有参数扩展的数组来避免子shell:
str="AAA\nBBB"
arr=(${str//\\n/ })
var="${arr[1]}"
echo -e "$str"
您可以通过头/尾管道输出来做到这一点 -var=$(cmd | tail -n +2 | head -n 1)
像这样:
var=$(echo -e 'AAA\nBBB' | sed -n 2p)
echo $var
BBB
在 bash 脚本中:变量=echo "AAA\nBBB" | awk "NR==2"