如何将命令输出的第二行读入bash变量?

sor*_*rin 10 bash

我有一个命令打印几行,我想把第二行放入一个bash变量.

喜欢echo "AAA\nBBB"和我想要一个bash命令放入BBB一个bash变量.

Ste*_*eve 14

sed:

var=$(echo -e "AAA\nBBB" | sed -n '2p')
Run Code Online (Sandbox Code Playgroud)

awk:

var=$(echo -e "AAA\nBBB" | awk 'NR==2')
Run Code Online (Sandbox Code Playgroud)

然后简单地,回显你的变量:

echo "$var"
Run Code Online (Sandbox Code Playgroud)


Aar*_*lla 5

拨打read两次:

echo -e "AAA\nBBB" | { read line1 ; read line2 ; echo "$line2" ; }
Run Code Online (Sandbox Code Playgroud)

请注意,您需要这样做,{}因此请确保两个命令都获得相同的输入流。此外,变量是无法访问外{},因此这并不会工作:

echo -e "AAA\nBBB" | { read line1 ; read line2 ; } ; echo "$line2"
Run Code Online (Sandbox Code Playgroud)

  • 要使变量存在于块的外部,请使用不涉及管道的方法:[进程替换](http://www.gnu.org/software/bash/manual/bashref.html#Process-Substitution) `{读取line1; 读取第2行;} <<(命令)`或[此处字符串](http://www.gnu.org/software/bash/manual/bashref.html#Here-Strings)`output = $(command); {读取第1行;读取第2行;} <<<“ $ output”` (5认同)