shell变量替换技术实践与生产实践

${value:-word}

如果变量名存在且非null,则返回变量的值,否则返回word字符串。

${value:=word}

如果变量名存在且非null,则返回变量的值,否则,设置这个变量值为word,并返回其值。

${value:?message}

如果变量名存在且非null,则返回变量的值,否则显示变量名;message,并退出当前的命令或者shell

范例: ${value:?"notdefined"} 如果value未定义,则显示-bash:value: not defined 并退出。

${value:+word}

如果变量名存在且非null,则返回word,否则返回null。

范例:${value:+word} 如果value已经定义,返回word(也就是真)

1、${value:-word}

当变量未定义或者值为空时候,返回值为word内容,否则返回变量的值

[[email protected] ~]# result=${cmz:-UNSET}#当cmz没有定义合作和是空会返回UNSET
[[email protected] ~]# echo $result
UNSET
[[email protected] ~]# echo $cmz

==>这里是空。

结论:当cmz没有内容时候就返回UNSET

[[email protected] ~]# cmz="caimengzhi" 
[[email protected] ~]# result=${cmz:-UNSET} #之前必须声明cmz变量
[[email protected] ~]# echo $result
caimengzhi
结论:当cmz有内容时候就返回cmz的变量内容

这个变量功能可以解决工字符串问题,变量没有定义。

2、${value:=word}

[[email protected] ~]# result=${test:=UNSET}
[[email protected] ~]# echo $result
UNSET

[[email protected] ~]# echo $test
UNSET

3、${value:?"not defined"}

[[email protected] ~]# result=${lmt:? not defined}
-bash: lmt:  not defined

4、${value-word}去掉冒号

也就是说当HTTPD不存在的时候将-后面的/usr/sbin/httpd赋值给等号前面的httpd

对变量的路径进行操作,最好先判断路径是不是非空特别是删除操作。

path=/server/backup

find ${path:=/tmp/} -name "*.tar.gz" -type f | xargs rrm - f

rm -rf ${path}

一下很重要

[[email protected] shell_scrpit]# vim d.sh
[[email protected] shell_scrpit]# sh -x d.sh 
+ find /tmp/ -name ‘*.tar.gz‘ -type f
+ xargs rrm - f
xargs: rrm: No such file or directory
+ rm -rf
[[email protected] shell_scrpit]# cat d.sh 
#path=/server/backup

find ${path:=/tmp/} -name "*.tar.gz" -type f | xargs rrm - f

#此时path没有定义 path路径将变为/tmp/

rm -rf ${path}

时间: 2024-12-28 00:53:38

shell变量替换技术实践与生产实践的相关文章

Shell变量替换,命令替换,转义字符

如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value of a is $a \n" 运行结果: Value of a is 10 这里 -e 表示对转义字符进行替换.如果不使用 -e 选项,将会原样输出: Value of a is 10\n 下面的转义字符都可以用在 echo 中: 转义字符 含义 \\ 反斜杠 \a 警报,响铃 \b 退格(删除键)

【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符

如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value of a is $a \n" 运行结果: Value of a is 10 这里 -e 表示对转义字符进行替换.如果不使用 -e 选项,将会原样输出: Value of a is 10\n 下面的转义字符都可以用在 echo 中: 转义字符 含义 \\ 反斜杠 \a 警报,响铃 \b 退格(删除键)

[转]shell 变量替换

转自:http://blog.csdn.net/xuhongning/article/details/6191515 1,参数替换: 不含有“:”的,只要定义了,就生效,不管是否为空 含有“:”的,即使定义了,但是为空就不生效 用来替换的内容可以是字符串.一个变量.命令的输出 被替换的内容是变量,如$a.$1等 1)默认值替换,如果变量$var没有定义,则整体值为default字符串,但var变量本身并没有被设置: ${var-default}                    如果var定

Shell替换:Shell变量替换,命令替换,转义字符

如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value of a is $a \n" 运行结果: Value of a is 10 这里 -e 表示对转义字符进行替换.如果不使用 -e 选项,将会原样输出: Value of a is 10\n 下面的转义字符都可以用在 echo 中: 转义字符 含义 \\ 反斜杠 \a 警报,响铃 \b 退格(删除键)

第二章 Shell变量定义

1. Shell变量概述 1. 什么是变量 变量是Shell传递数据的一种方法,简单理解:用一个固定的字符串去表示不固定的内容,便于后续引用. 2.变量命令规范 变量定义时名称有要求:字母.数字.下划线几个组成,尽量字母开头,变量名最好具备一定的含义. ip=10.0.0.100 ip1=10.0.0.100 Hostname_Ip=10.0.0.100 hostname_IP=10.0.0.100 等号是赋值,需要注意:等号两边不能有空格,其次定义的变量不要与系统命令出现冲突. 3. Shel

第二章 Shell变量

第二章 Shell变量 1. shell变量概述 1. 什么是变量 变量是Shell传递数据的一种方法,简单理解:用一个固定的字符串去表示不固定的内容,便于后续引用. 2.变量命令规范 变量定义时名称有要求:字母.数字.下划线几个组成,尽量字母开头,变量名最好具备一定的含义. ip=10.0.0.100 ip1=10.0.0.100 Hostname_Ip=10.0.0.100 hostname_IP=10.0.0.100 等号是赋值,需要注意:等号两边不能有空格,其次定义的变量不要与系统命令出

shell变量的替换,命令的替换,转义字符

1,shell变量的替换 变量可以根据变量是否为空或者被删除,而被替换为特定的值 ${var}  变量本来的值 $(var:-word)   如果变量为空,或者已被删除那么返回word,但是不改变var的值 name="xiaoming" echo "xiaoming 's age is ${age:-12}" ech   "age = ${age}" >>>>>>>> xiaoming 's ag

shell脚本之变量替换

代码如下 #!/bin/bash a=123 let "a += 1" echo a=$a echo b=${a/12/BB} echo "b=$b" 执行结果为 a=124 b=BB4 b=${a/12/BB} 变量a中的值12被替换为BB,所以$b=BB4 shell脚本之变量替换,布布扣,bubuko.com

Shell变量内容的删除、替代与替换

Shell变量的删除: [email protected]:~$ path=${PATH}     ##设置path和PATH相同内容 [email protected]:~$ echo $path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games [email protected]:~$ echo ${path#/*sbin:}        ##加上'#'符号删除匹