我想读取数组中命令的输出:
类似的东西:
(使用输入框上方的{}重新格式化代码)
var=`echo tell told till`
echo "$var" | while read temp; do echo $temp ; done
该程序将输出:
tell
told
till
我有两个问题:
答案 0 :(得分:2)
如果要将stdout中的元素放入数组中,例如
declare -a array
array=( $(my command that generates stdout) ) #eg array=( $(ls))
如果你有一个变量并且想要放入数组
$> var="tell till told"
$> read -a array <<< $var
$> echo ${array[1]}
till
$> echo ${array[0]}
tell
或者只是
array=($var)
来自bash参考:
Here Strings
A variant of here documents, the format is:
<<<word
The word is expanded and supplied to the command on its standard input.
答案 1 :(得分:1)
管道(“|
”)将前面命令的stdout连接到以下命令的stdin。
答案 2 :(得分:1)
要将字符串拆分为单词,您只需使用:
for word in $string;
do
echo $word;
done;
所以要做你想要的事情
while read line
do
for word in $line
do
echo $word
done
done
正如Ignacio Vazquez-Abrams所说,管道将左侧的标准连接到右侧的标准输出。
答案 3 :(得分:0)
使用管道时:
command1 | command2
写入标准输出的command1的输出将成为command2(stdin)的输入。管道将stdout转换为stdin。
对于数组: 您将值赋给数组:
array=(val1 val2 val3)
所以尝试一下:
array=($var)
现在$ array中有$ var:
> echo ${array[*]}
tell
told
till
> echo ${array[1]}
told
这是你的意思吗?