首页 > 代码库 > shell IFS readLine.sh
shell IFS readLine.sh
processLine() { line="$@" echo $line } FILE="" if [ "$1" == "" ]; then FILE="/dev/stdin" else FILE="$1" if [ ! -f $FILE ]; then echo "$FILE : does not exists" exit 1 elif [ ! -r $FILE ]; then echo "$FILE : can not read" exit 2 fi fi BAKIFS=$IFS IPS=$(echo -en "nb") exec 3<&0 exec 0<$FILE while read line do processLine $line done exec 0<&3 IFS=$BAKIFS exit 0
使用IFS来进行文件分析,或者是对文件特定的字符进行分割
#shell environment $IFS useage # S : Internal Field Separator IFS=: a=Hello:World echo $a #OutPut is Hello World #IFS save Key Value, maybe space\tab\'\n'\other token #sparse input or output key value # The following code segment will only work in ksh, # and it will fail in bash IP=192.168.0.254 IFS="." TMPIP=$(echo $IP) IFS=" " #space echo $TMPIP | read ip1 ip2 ip3 ip4 INVIP=$ip4.$ip3.$ip2.$ip1 echo $INVIP我们将IFS的内容输出来,但是由于一些内容是不能直接显示出来,但是我们可以将使用一些格式化将内容输出:
echo $IFS | od -d echo $IFS | od -b echo $IFS | od -x分别是使用不同进制的表示出来:
如果是用冒号("")引起来,表示这个变量不用IFS替换!!所以可以看到这个变量的"原始值"。反之,如果不加引号,输出时会根据IFS的值来分割后合并输出! $* 是按照IFS中的第一个值来确定的!下面这两个例子还有细微的差别!
shell IFS readLine.sh
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。