您的位置:首页 > 运维架构 > Shell

Shell教程相关知识整理

2017-04-25 21:19 162 查看

Shell替换

转义字符

转义字符含义
\\反斜杠
\a警报,响铃
\b退格(删除键)
\f换页(FF),将当前位置移到下页开头
\n换行
\r回车
\t水平制表符(tab键) 
\v垂直制表符
如果表达式中包含特殊字符,Shell 将会进行替换。
例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。
[ccbipj@mycentos Desktop]$ var=100
[ccbipj@mycentos Desktop]$ echo -e "Value of var is $var \n"	 -e 表示对转义字符进行替换
Value of var is 100

[ccbipj@mycentos Desktop]$ echo "Value of var is $var \n"		不实用-e和使用-E是一个效果,仅仅将转义字符原样输出
Value of var is 100 \n
[ccbipj@mycentos Desktop]$ echo -E "Value of var is $var \n"
Value of var is 100 \n
[ccbipj@mycentos Desktop]$ echo -n "Value of var is $var \n" 	-n选项静止插入换行符
Value of var is 100 \n[ccbipj@mycentos Desktop]$

命令替换

命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

注意该命令是指shell命令行中的命令,它被以反引号(``)引起来然后赋值给一个变量,因此使用shell命令进行输出实际就是输出被替换哪个命令的结果(这个结果暂存到被定义的shell变量中)
#!/bin/bash

DATE=`date` 	注意是反引号
echo "Date is $DATE"
echo 'Date is $DATE' 	注意必须是双引号

USERS=`who | wc -l`
echo "Logged in user are $USERS"

UP=`date ; uptime` 	多个命令用分号隔开
echo "Uptime is $UP"


运行结果为:

Date is 2017年 04月 25日 星期二 21:09:33 CST
Date is $DATE
Logged in user are 2
Uptime is 2017年 04月 25日 星期二 21:09:33 CST
21:09:33 up 13:03,  2 users,  load average: 0.06, 0.08, 0.05

变量替换

变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值

形式说明
${var}变量本来的值
${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。

若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。
#!/bin/bash

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}" 返回 word,但不改变 var 的值,var值为空

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}" 	返回 word,并将 var 的值设置为 word

unset var
echo ${var:+"This is default value"} 	var没有被定义,因此输出为空
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"} 	var被定义,那么返回word
echo "4 - Value of var is $var"		var被定义,不改变var的值,输出定义的var的值

echo ${var:?"Print this message"} 		var被定义且有值,因此不输出该出错提示信息
echo "5 - Value of var is ${var}"		var被定义,不改变var的值,输出定义的var的值
运行结果为:
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set

3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
下面是直接在shell命令行执行得到的结果:
[ccbipj@mycentos Desktop]$ echo ${var:+default value}

[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is
[ccbipj@mycentos Desktop]$ echo ${var:-default value}
default value
[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is
[ccbipj@mycentos Desktop]$ echo ${var:?print default value}
bash: var: print default value
[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is
[ccbipj@mycentos Desktop]$ var=2
[ccbipj@mycentos Desktop]$ echo ${var:-print default value}
2
[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is 2
[ccbipj@mycentos Desktop]$ echo ${var:+print default value}
print default value
[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is 2
[ccbipj@mycentos Desktop]$ echo ${var:?print default value}
2
[ccbipj@mycentos Desktop]$ echo "value of var is ${var}"
value of var is 2


继续更新中....















                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: