var="valueA valueB"
我想拆分上面的字符串,如下所示,并希望在bash shell上的一个衬里中读取这些值。
以下脚本无效。
echo $var |awk '{print $1 $2}' |while read var; do echo var1=$1 and var2=$2;done
echo $var |awk '{ var1=$1 ; var2=$2}' |while read var1 var2; do echo var1=$var1 and var2=$var2;done
答案 0 :(得分:4)
要将这些值转换为var1
和var2
,请使用:
read var1 var2 <<<"$var"
以上使用here-string,应该在bash,ksh或zsh下工作。
默认情况下,上面假定两个值由空格分隔。只需更改shell IFS
变量的值即可实现其他分隔符。
答案 1 :(得分:0)
在bash中:
$ read -a foo <<< "$var"
$ set | grep ^foo
foo=([0]="valueA" [1]="valueB")
$ echo "${foo[1]}"
valueB
答案 2 :(得分:0)
以下为我工作。
var="valueA valueB"
echo $var |while read var1 var2 ;do echo $var1 ---- $var2;done
输出将是:
valueA --- valueB
答案 3 :(得分:0)
在ksh93中,这将适用于货架:
echo "$var" |
read var1 var2 &&
echo $var1 --- $var2
与https://stackoverflow.com/a/32855720/667820有效,但保留$ var1和$ var2的值。
对于bash,你需要bash 4.x并且某些选项需要(un)设置。