加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

自定义Shell分隔符

发布时间:2020-12-16 01:38:39 所属栏目:安全 来源:网络整理
导读:在shell中使用for循环语句时,参数列表有时候需要将空格纳入参数当中,这时就不好使用空格作为分隔符。如下例中,我实际想要输出的是a1、a2、b1、b2以及hello world,但却输出了如下内容: [[email?protected] ~]# vim a.sh#!/bin/bashlist="a1 a2 b1 b2 "h

  在shell中使用for循环语句时,参数列表有时候需要将空格纳入参数当中,这时就不好使用空格作为分隔符。如下例中,我实际想要输出的是a1、a2、b1、b2以及hello world,但却输出了如下内容:

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

  默认情况下,shell会以空格、制表符、换行符作为分隔符,但遇到以上情况时,需要使用IFS来自定义shell的分隔符。

  IFS可以指定单个字符作为分隔符,IFS=:(以冒号作为分隔符);IFS也可以指定多个字符作为分隔符,IFS=n:;(以反斜杠、n、冒号、分号作为分隔符)。注意:在IFS中,$‘n‘和$‘t‘才是换行符和制表符。

  实例如下:

[[email?protected] ~]# vim a.sh
IFS=$‘n‘
list="a1a2na3"
#!/bin/bash
IFS=:
for var in `tail -4 /etc/passwd | head -2`
do
 echo $var
done
[[email?protected] ~]# sh a.sh
polkitd
x
999
998
User for polkitd
/
/sbin/nologin
sshd
x
74
74
Privilege-separated SSH
/var/empty/sshd
/sbin/nologin

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读