shell中for循环变量有空格的问题——IFS变量
Posted 礁之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中for循环变量有空格的问题——IFS变量相关的知识,希望对你有一定的参考价值。
- 在使用shell的for循环时,如果循环的字符串中间有空格,那么循环时会自动分割,下面是解决的方法
只需要更改 shell分隔符即可
在for循环之前修改IFS变量,示例:
OLDIFS="$IFS" #备份旧的IFS变量
IFS=$'\\n' #修改分隔符为换行符
for i in `cat aaa` #aaa文件中存放着公钥
do
echo "$i"
done
IFS="$OLDIFS" #还原IFS变量
- 注释:
IFS变量的相关信息:
- Shell把变量IFS内的每一个字符都当做是一个
分割符(delimeter)
,用这些字符作为每一个字段的结束符来进行分割。 - 如果IFS没有设置,或者IFS的值被设置为
"\\t\\n"(space, tab和 newline)
,那么操作对象的开始和结束处的所有space, tab和newline序列都将被忽略,但是操作对象中间的space, tab和newline序列会作为界定符工作。 - 如果IFS值不是
默认值(例如程序中对IFS进行设置过)
,只有出现在IFS内的空白字符(可能是space, tab或newline中的一个或几个)才会在单词开始和结束处被忽略,这里说的是单词,而不是整个操作对象。 - IFS内的非空白字符多个连续出现时,每个非空白字符会被当做单独的分隔符看待,但是多个连续的空白字符会被当做一个分隔符看待。
- 如果IFS为空(“null”),则不会进行单词分割。
以上是关于shell中for循环变量有空格的问题——IFS变量的主要内容,如果未能解决你的问题,请参考以下文章