Bash脚本编程之字符串处理(2)

[root@c7-server ~]# echo ${userinfo} root:x:0:0:root:/root:/bin/bash [root@c7-server ~]# echo ${userinfo/%bash} root:x:0:0:root:/root:/bin/

字符大小写转换

${var^^}:将变量var中的所有小写字符转换成大写。

${var,,}:将变量var中的所有大写字符转换成小写。

[root@c7-server ~]# name=RenDanChaoXian [root@c7-server ~]# echo ${name^^} RENDANCHAOXIAN [root@c7-server ~]# echo ${name,,} rendanchaoxian

变量赋值

${var:-VALUE}:如果变量var为空或者未设置,则返回VALUE;否则返回变量var的值。注意,变量name本身的值不会被修改。

[root@c7-server ~]# echo ${name} RenDanChaoXian [root@c7-server ~]# echo ${name:-alongdidi} RenDanChaoXian [root@c7-server ~]# unset name [root@c7-server ~]# echo ${name:-alongdidi} alongdidi [root@c7-server ~]# echo ${name} [root@c7-server ~]# name= [root@c7-server ~]# echo ${name:-alongdidi} alongdidi [root@c7-server ~]# echo ${name} [root@c7-server ~]#

${var:=VALUE}:如果变量var为空或者未设置,则返回VALUE,并将VALUE赋值给变量var;否则返回变量var的值。

[root@c7-server ~]# name=zwl [root@c7-server ~]# echo ${name} zwl [root@c7-server ~]# echo ${name:=alongdidi} zwl [root@c7-server ~]# unset name [root@c7-server ~]# echo ${name:=alongdidi} alongdidi [root@c7-server ~]# echo ${name} alongdidi [root@c7-server ~]# name= [root@c7-server ~]# echo ${name:=alongdidi} alongdidi [root@c7-server ~]# echo ${name} alongdidi

${var:+VALUE}:如果变量为空或者未设置,那么不会返回任何值。否则则返回VALUE的值。注意,变量name本身的值不会被修改。

[root@c7-server ~]# name= [root@c7-server ~]# echo ${name:+alongdidi} [root@c7-server ~]# unset name [root@c7-server ~]# echo ${name:+alongdidi} [root@c7-server ~]# name=zwl [root@c7-server ~]# echo ${name:+alongdidi} alongdidi [root@c7-server ~]# echo ${name} zwl [root@c7-server ~]#

${var:?ERROR_INFO}:如果变量var为空或者未设置,则返回错误信息ERROR_INFO;否则返回变量var的值。

[root@c7-server ~]# name= [root@c7-server ~]# echo ${name:?"There is something wrong"} -bash: name: There is something wrong [root@c7-server ~]# unset name [root@c7-server ~]# echo ${name:?"There is something wrong"} -bash: name: There is something wrong [root@c7-server ~]# name=zwl [root@c7-server ~]# echo ${name:?"There is something wrong"} zwl

练习

写一个脚本,实现如下功能:

  提示用户输入一个可执行的命令的名称,如ls。

  获取该命令所依赖的库文件列表(借助ldd命令)。

  复制命令至某目标目录(例如:/mnt/sysroot/,即将此目录当做新的根目录)下的对应路径中。

    bash, /bin/bash --> /mnt/sysroot/bin/bash

    useradd, /usr/sbin/useradd --> /mnt/sysroot/usr/sbin/useradd

  复制命令所依赖的库文件至对应的目标目录下。

    /lib64/ld-linux-x8664.so.2 --> /mnt/sysroot/lib64/ld-linux-x8664.so.2

  进阶:每次复制完一个命令后不退出,而是等待用户键入新的需要复制的命令,直到用户显示输入“quit”方可退出脚本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/838364d770dc4c3298281fed84913125.html