自定義Shell分隔符


  在shell中使用for循環語句時,參數列表有時候需要將空格納入參數當中,這時就不好使用空格作為分隔符。如下例中,我實際想要輸出的是a1、a2、b1、b2以及hello world,但卻輸出了如下內容:

[root@youxi1 ~]# vim a.sh
#!/bin/bash
list="a1 a2 b1 b2 \"hello world\""
for var in $list
do
 echo $var
done
[root@youxi1 ~]# sh a.sh
a1
a2
b1
b2
"hello
world"

  默認情況下,shell會以空格、制表符、換行符作為分隔符,但遇到以上情況時,需要使用IFS來自定義shell的分隔符。

  IFS可以指定單個字符作為分隔符,IFS=:(以冒號作為分隔符);IFS也可以指定多個字符作為分隔符,IFS=\n:;(以反斜杠、n、冒號、分號作為分隔符)。注意:在IFS中,$'\n'和$'\t'才是換行符和制表符。

  實例如下:

[root@youxi1 ~]# vim a.sh
IFS=$'\n'
list="a1a2\na3"
#!/bin/bash
IFS=:
for var in `tail -4 /etc/passwd | head -2`
do
 echo $var
done
[root@youxi1 ~]# sh a.sh
polkitd
x
999
998
User for polkitd
/
/sbin/nologin
sshd
x
74
74
Privilege-separated SSH
/var/empty/sshd
/sbin/nologin

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM