• 自定义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、冒号、分号作为分隔符)。注意:在IFS中,$' '和$' '才是换行符和制表符。

      实例如下:

    [root@youxi1 ~]# vim a.sh
    IFS=$'
    '
    list="a1a2
    a3"
    #!/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
    

      

  • 相关阅读:
    Bot Style Tests VS Page Objects
    Qemu文档
    PlantUML
    include <xxx.h> 和 include "xxxx.h"的区别
    2021.40 喜欢当下
    2021.39 MIUI崩溃
    2021.38 聚焦
    2021.37 心流
    2021.36 负熵
    2021.35 精神熵
  • 原文地址:https://www.cnblogs.com/diantong/p/11697985.html
Copyright © 2020-2023  润新知