使用多个命令

如果想要多个命令同时运行,可以把它们放在一行,用分号隔开。

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

最新文章

  1. [LeetCode] Candy 分糖果问题
  2. Kafka是分布式发布-订阅消息系统
  3. BZOJ 3229: [Sdoi2008]石子合并
  4. 【POJ 2485】Highways(Prim最小生成树)
  5. ASP.NET 学习笔记
  6. js中的apply调用
  7. Memcached 配置 和项目应用
  8. Map/Reduce之间的Partitioner接口
  9. php socket 通信
  10. Phonegap 版本minSdkVersion为8的时候的自动更新与升级
  11. border和outline区别
  12. 对Spring事务的一些误解
  13. Hibernate--对象关系
  14. 本地项目文件夹上传至个人Github
  15. jmeter数据库,charles抓包,Python循环语句
  16. 学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习
  17. iframe父页面获取子页面元素方法
  18. noip第8课资料
  19. Arduino从DHT11读取温湿度数据并显示在1602LCD
  20. debian linux 下设置开机自启动

热门文章

  1. Linux就该这么学--了解Shell脚本
  2. [容易] A + B 问题
  3. 深刻理解render 和 redirect_to
  4. 同源策略 , CORS
  5. 《高性能Javascript》 Summary(一)
  6. Appium——元素定位
  7. 分享知识-快乐自己:SpringMVC 底层执行原理解析
  8. EOF的使用
  9. codeforces 622E E. Ants in Leaves(贪心+dfs)
  10. hdu-5792 World is Exploding(容斥+树状数组)