使用多个命令
如果想要多个命令同时运行,可以把它们放在一行,用分号隔开。
date;who
创建shell脚本文件
创建shell脚本时,必须在文件第一行指定要使用的shell
#!/bin/bash
显示消息
echo命令可以用单引号或双引号来划定文本字符串。
[root@node1 ljy]# more ceshi.sh #!/bin/bash echo "the time are:" date echo "ceshi_1" echo ceshi_2 [root@node1 ljy]# sh ceshi.sh the time are: 2019年 05月 16日 星期四 19:07:35 CST ceshi_1 ceshi_2
如果想把文本字符串与时间输出在同一行,可以加-n参数。
[root@node1 ljy]# more ceshi.sh #!/bin/bash echo -n "the time are:" date [root@node1 ljy]# sh ceshi.sh the time are:2019年 05月 16日 星期四 19:08:50 CST
使用变量
1、环境变量
可以用set命令来显示一份完整的当前环境变量列表。
在脚本中,可以在环境变量的名称前加上美元符($)来使用这些环境变量。
如果要显示美元符,在美元符前面加一个反斜线\。
2、用户变量
用户变量区分大小写,使用等号将值赋给变量,在变量、等号、值之间不能出现空格。
有两种方式可以将命令输出赋给变量:
a,反引号字符(`)
b,$()格式
[root@node1 ~]# test=`date` [root@node1 ~]# echo $test 2019年 05月 17日 星期五 09:22:03 CST [root@node1 ~]# test2=$(date) [root@node1 ~]# echo $test2 2019年 05月 17日 星期五 09:22:19 CST
举例
[root@node1 ljy]# more ceshi.sh #!/bin/bash today=$(date +%y%m%d) ls -al > log.$today [root@node1 ljy]# sh ceshi.sh [root@node1 ljy]# ll 总用量 8 -rw-r--r-- 1 root root 54 5月 17 09:25 ceshi.sh -rw-r--r-- 1 root root 213 5月 17 09:25 log.190517
today变量是被赋予格式化后的date命令的输出,+%y%m%d格式告诉date命令将日期显示为两位数的年月日组合。
管道
管道(|)被放在命令之间,将一个命令的输出重定向到另一个命令中,即第一个命令产生的结果的同时,传递给下一个命令。
[root@node1 ljy]# rpm -qa | sort >rpm.list [root@node1 ljy]# more rpm.list acl-2.2.51-14.el7.x86_64 aic94xx-firmware-30-6.el7.noarch alsa-firmware-1.0.28-2.el7.noarch alsa-lib-1.1.4.1-2.el7.x86_64 alsa-tools-firmware-1.1.0-1.el7.x86_64 basesystem-10.0-7.el7.centos.noarch bash-4.2.46-30.el7.x86_64
退出脚本
shell中运行的每个命令都使用退出状态码告诉shell已经运行完毕。
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码
exit命令允许你在脚本结束时指定一个状态码
[root@node1 ljy]# more ceshi.sh #!/bin/bash date [root@node1 ljy]# sh ceshi.sh 2019年 05月 17日 星期五 09:42:18 CST [root@node1 ljy]# echo $? 0 [root@node1 ljy]# more ceshi.sh #!/bin/bash date exit 5 [root@node1 ljy]# sh ceshi.sh 2019年 05月 17日 星期五 09:42:43 CST [root@node1 ljy]# echo $? 5