在 bash 或 ksh 或 perl 中将字符串拆分为一个衬里
split string in one liner in bash or ksh or perl
var="valueA valueB"
我想如下所示拆分上面的字符串,并想在 bash shell.
上的一个衬垫中读取这些值
以下脚本不工作。
echo $var |awk '{print }' |while read var; do echo var1= and var2=;done
echo $var |awk '{ var1= ; var2=}' |while read var1 var2; do echo var1=$var1 and var2=$var2;done
在bash中:
$ read -a foo <<< "$var"
$ set | grep ^foo
foo=([0]="valueA" [1]="valueB")
$ echo "${foo[1]}"
valueB
要将这些值放入 var1
和 var2
,请使用:
read var1 var2 <<<"$var"
上面使用了一个 here-string,应该可以在 bash、ksh 或 zsh 下工作。
以上假设默认情况下这两个值由空格分隔。只需更改 shell 的 IFS
变量的值即可使用其他分隔符。
以下对我有用。
var="valueA valueB"
echo $var |while read var1 var2 ;do echo $var1 ---- $var2;done
输出将是:
valueA --- valueB
在 ksh93 中,这将起作用:
echo "$var" |
read var1 var2 &&
echo $var1 --- $var2
实际上与相同,但$var1和$var2的值被保留。
对于 bash,您需要 bash 4.x 并且需要(取消)设置一些选项。
var="valueA valueB"
我想如下所示拆分上面的字符串,并想在 bash shell.
上的一个衬垫中读取这些值以下脚本不工作。
echo $var |awk '{print }' |while read var; do echo var1= and var2=;done
echo $var |awk '{ var1= ; var2=}' |while read var1 var2; do echo var1=$var1 and var2=$var2;done
在bash中:
$ read -a foo <<< "$var"
$ set | grep ^foo
foo=([0]="valueA" [1]="valueB")
$ echo "${foo[1]}"
valueB
要将这些值放入 var1
和 var2
,请使用:
read var1 var2 <<<"$var"
上面使用了一个 here-string,应该可以在 bash、ksh 或 zsh 下工作。
以上假设默认情况下这两个值由空格分隔。只需更改 shell 的 IFS
变量的值即可使用其他分隔符。
以下对我有用。
var="valueA valueB"
echo $var |while read var1 var2 ;do echo $var1 ---- $var2;done
输出将是:
valueA --- valueB
在 ksh93 中,这将起作用:
echo "$var" |
read var1 var2 &&
echo $var1 --- $var2
实际上与
对于 bash,您需要 bash 4.x 并且需要(取消)设置一些选项。