IFS使用之道

#!/bin/bash

IFS=:
for folder in $PATH  #PATH变量分隔符为:
do
 echo $folder
 echo ------------------
 for file in  $folder/*   # /*表示需要遍历$folder内所有的目录   
 do
  if [ -x $file ]  
  then
   echo $file
  fi
 done
done

IFS是什么鬼

金沙官网线上,IFS(Internal Field Seprator),即内部域分隔符

IFS(Internal Field Seprator),即内部域分隔符,完整定义是“The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command substitution, and when performing variable substituioin.”

IFS用法:指定分隔符,默认为空格,制表符,“n”

IFS查看

IFS存在于登录shell的局部环境变量中

[root@localhost ~]# set|grep IFS
IFS=$' tn'
[root@localhost ~]#

IFS=:  表示分隔符只有:   ,若要指定多个分隔符,使用IFS='n':;"   这里表示分隔符为'n'   :  ;  "

shell脚本中应用

通常在shell脚本中,我们会使用for遍历使用特定字符分隔的字符串,而for循环的默认分隔符是空格,这是我们就需要修改当前脚本的默认分隔符。例如,遍历如下用分号分隔的字符串

#!/bin/sh
file_name='hello.txt:world.txt:test.txt'  #被遍历的字符串
OLD_IFS=$IFS  #将默认的IFS保存到临时变量中,以便后续恢复默认值
IFS=':'  #定义新的分隔符
for i in $file_name;do
  echo $i
done
IFS=$OLD_IFS  #恢复默认的分隔符

本文由金沙官网线上发布于操作系统,转载请注明出处:IFS使用之道

您可能还会对下面的文章感兴趣: