通过拆分一个字符串分隔的字符串我试图分裂这样的字符串:在bash
file1 -> file2
,并期望影响“文件1”和“文件2”到2个变量。
我试图与IFS,但它似乎只为一个字符长的工作(使用IFS =“ - >”我得到的‘文件1’和‘>文件2’......
基于this article,我尝试另一个做法:
awk 'BEGIN {FS=" -> "} {xxx}' <<< $f
的问题是,我没有成功影响到了$ 1,$ 2,我以后可以用一个变量...
通过拆分一个字符串分隔的字符串我试图分裂这样的字符串:在bash
file1 -> file2
,并期望影响“文件1”和“文件2”到2个变量。
我试图与IFS,但它似乎只为一个字符长的工作(使用IFS =“ - >”我得到的‘文件1’和‘>文件2’......
基于this article,我尝试另一个做法:
awk 'BEGIN {FS=" -> "} {xxx}' <<< $f
的问题是,我没有成功影响到了$ 1,$ 2,我以后可以用一个变量...
您可以通过几种方式做到这一点:
str="file1 -> file2"
echo "Fast"
var1="${str% -> *}"
var2="${str#* -> }"
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}"
echo "With cut"
var1="$(echo ${str}|cut -d" " -f1)"
var2="$(echo ${str}|cut -d" " -f3)"
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}"
echo "With read"
read -r var1 arrow var2 <<< ${str}
您可以使用$():
VARIABLE="$(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f)"
您可以将结果赋予一个数组:
ARRAY=($(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f))
,并提取值作为独立变量:
${ARRAY[0]}
${ARRAY[1]}
and so on...
并将其分配给您的变量。
我明白,我怎么可以打印,但我怎么能在脚本以后使用它? – Sharcoux
非常清楚。非常感谢你! – Sharcoux
你从哪里找到了阅读的那个?我没有找到文档,“man read”没有太多帮助...... – Sharcoux
我在SO的某个地方了解到了这一点,也许是http://stackoverflow.com/a/19052249/3220113。 –