在单引号上使用IFS拆分Linux bash字符串

在单引号上使用IFS拆分Linux bash字符串,linux,bash,quotes,string-split,ifs,Linux,Bash,Quotes,String Split,Ifs,关于LinuxBash中的IFS字符串拆分和单引号转义,有许多问题得到了回答,但我发现没有一个问题与这两个主题联系在一起。遇到这个问题时,我(对我来说)遇到了一个奇怪的行为,代码如下: (bash脚本块) theString=“一个包含一些单引号的字符串” old_IFS=$IFS IFS=\' 阅读-a stringTokens当您执行以下操作时: for token in ${stringTokens[@]} 循环有效地变成: for token in a string with some

关于LinuxBash中的IFS字符串拆分和单引号转义,有许多问题得到了回答,但我发现没有一个问题与这两个主题联系在一起。遇到这个问题时,我(对我来说)遇到了一个奇怪的行为,代码如下:

(bash脚本块)

theString=“一个包含一些单引号的字符串”
old_IFS=$IFS
IFS=\'
阅读-a stringTokens当您执行以下操作时:

for token in ${stringTokens[@]}
循环有效地变成:

for token in a string with some single quotes in it
for循环不按顺序解析数组元素,但它解析由空格分隔的字符串的整个输出

相反,请尝试:

for token in "${stringTokens[@]}";
do
   echo "$token"
done
这相当于:

for token in "in a string with some " "single" " quotes in it"
我的电脑上的输出:

a string with some 
single
 quotes in it
查看以下内容了解更多Bash陷阱:

a string with some 
single
 quotes in it