我这样存储命令的输出。
all=(`some command`)
for i in $all; do
echo $i
done
这会像这样返回输出。
string1a string1b string1c
string2a string2b string2c
string3a string3b string3c
然而,我希望能够访问i值的一部分,其中空格是分隔符。例如这样的输出。
string1a string1c
string2a string2c
string3a string3c
我该怎么做?
% print -l 'string1a string1b string1c' 'string2a string2b string2c'
'string3a string3b string3c'
string1a string1b string1c
string2a string2b string2c
string3a string3b string3c
% all=( "$( print -l 'string1a string1b string1c' 'string2a string2b string2c'
'string3a string3b string3c' )" )
% print -l ${all//string<->b }
string1a string1c
string2a string2c
string3a string3c
%
$(...)
与backticks的作用相同,但它是首选,因为它可以嵌套,而backticks不能"$(...)"
确保保留换行符- CCD_ 3从参数CCD_ 4移除与模式CCD_ 5匹配的所有子串
<->
匹配任何数字print -l
将每个自变量打印在单独的一行上
或者,您也可以在不创建参数$all
:的情况下执行此操作
% print -l ${"$(
print -l 'string1a string1b string1c' 'string2a string2b string2c'
'string3a string3b string3c'
)"//string<->b }
string1a string1c
string2a string2c
string3a string3c
%