- 1、变量赋值等:
- ${parameter:-word}:如果parameter为空或未定义,则变量展开为“word”;否则,展开为parameter的值;
- 如:
![](https://i-blog.csdnimg.cn/blog_migrate/96d2ad8df76926cd01984c04faeeeab6.png)
${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,则展开为“word”值;
如:
![](https://i-blog.csdnimg.cn/blog_migrate/e235649b9346012ff72b9c4c5c1e9b45.png)
${parameter:=word}:如果parameter为空或未定义,则变量展开为“word”,并将展开后的值赋值给parameter;
如:
![](https://i-blog.csdnimg.cn/blog_migrate/2525a983eed709f6f487d82331825b93.png)
${parameter:offset:length}:取子串,从offset处的后一个字符开始,取lenth长的子串;
如:
![](https://i-blog.csdnimg.cn/blog_migrate/2def268747f6bd5dece1c80e9ebb2d70.png)
2、脚本配置文件
/etc/rc.d/init.d/服务脚本
服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件
怎么样让脚本的配置文件生效呢,那我们就举一个例子吧。我们先创建一个脚本wang.sh
如:
![](https://i-blog.csdnimg.cn/blog_migrate/cd3b8bf00969605404d488e8dbfb60d3.png)
如果配置文件中没有给出变量值你也可以利用上面的变量赋值给它一个初始值,只需脚本中添加一项即可:
如:
![](https://i-blog.csdnimg.cn/blog_migrate/7eb56cfd78f118a064b061292e1cf312.png)
然后再把配置文件中的变量取空测试结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/3aee4e239c6b936d1250a4de2409cfda.png)
3、局部变量
变量在脚本中有可能重名,在一个脚本中如函数变量和全局变量重名了怎么办?那么这里就要用到局部变量了,下面就让我们用一个例子来解释一下吧。编辑一个名为b.sh的脚本,内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/4d9ec745adc9847a61d21fe92e57ce95.png)
执行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/18f5f391c5280ffb06d92adc337b628f.png)
从图中的结果来看上面的函数中的变量影响到了下面的执行结果,所以为了避免造成这样的影响只需给函数定义局部变量即可 图像 132
执行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/31860635a3aaa742efb05e025fad0b71.png)
4、命令mktemp用于创建临时文件或目录,为了不让临时文件或目录重名可以在执行命令时在后面加上.XX(大写),XX是系统给生成的随机数。
格式:
mktemp /
temp/file.XX 临时文件
mktemp -d /
temp/file.XX 临时目录
但是为了便于我们使用把文件路径保存在变量中即可。
![](https://i-blog.csdnimg.cn/blog_migrate/7a863e919fa07882737c5dfa9473df6c.png)
5、重要的信号
1:SIGHUP ###重要的信号:让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;
2:SIGINT ### 等于快捷键Ctrl+c:中断一个进程
9:SIGKILL ###杀死一个进程
15:SIGTERM ###终止一个进程,默认信号
指定一个信号的方法:
信号号码; kill 1
信号名称:kill SIGILL
信号名称简写:kill KILL
6、一行执行多个语句,语句间用分号分隔
7、Shell条件判断
-eq: 测试两个整数是否相等;相等为真,不等为假;
-ne: 测试两个整数是否不等;不等,为真;相等,为假;
-lt: 测试一个数是否小于另一个数;小于,为真;否则,为假;
-le:测试一个数是否小于或等于另一个数,小于和等于为真,否则为假;
-gt: 测试一个数是否大于另一个数;大于,为真;否则,为假;
-ge: 测试一个数是否大于或等于另一个数,大于或等于为真,否则为假;
格式如:
[ A -eq B ] 若A等于B,则为真
[ A -ne B ] 若A不等于B,则为真
[ A -lt B ] 若A小于B,则为真
[ A -le B ] 若A小于等于B,则为真
[ A -gt B ] 若A大于B,则为真
[ A -ge B ] 若A大于等于B,则为真
8、shell中如何进行算术运算:
如: A=3
B=6
1、let 算术运算表达式 let C=$A+$B
[root@localhost ~]# let C=$A+$B
[root@localhost ~]# echo $C
9
2、$[算术运算表达式] let D=$[$A+$B]
[root@localhost ~]# let D=$[$A+$B]
[root@localhost ~]# echo $D
9
3、$((算术运算表达式)) let E=$(($A+$B))
[root@localhost ~]# let E=$(($A+$B))
[root@localhost ~]# echo $E
9
4、expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
F=`expr $A + $B`
[root@localhost ~]# F=`expr $A + $B`
[root@localhost ~]# echo $F
9
转载于:https://blog.51cto.com/lbxiaoxin/1172788