shell初级-----构建基本脚本
使用多个命令
如果想要多个命令同时运行,可以把它们放在一行,用分号隔开。
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
shell初级-----构建基本脚本的更多相关文章
- Shell文件权限和脚本执行
一.预备知识 1.shell的作用 2.常识 (1)Tab键自动补全 使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...
- LR12.53—第1课:构建Vuser脚本
第1课:构建Vuser脚本 要生成系统上的负载,首先建立一个可以运行以模拟真实用户行为Vuser脚本.您使用VuGen创建和构建Vuser脚本. 在这一课中,你将涵盖以下主题: 介绍VuGen将 - ...
- shell中引用其他脚本的方法
在Shell中引用其他脚本的方法是source filename.sh 或 . filename.sh 注意: . 和 filename.sh之间必须有空格
- shell编程之服务脚本编写,文件锁以及信号捕获
shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...
- Linux - 简明Shell编程11 - 调用脚本(CallTheScript)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 主脚本: CallTheScript.sh #!/bi ...
- Linux shell编写端口扫描脚本
Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...
- Shell - 简明Shell入门11 - 调用脚本(CallTheScript)
示例脚本及注释 主脚本: CallTheScript.sh #!/bin/bash . ./11-subscript.sh # 调用其他脚本;注意点号"."和文件路径之间有一空格; ...
- (转)shell实现多级菜单脚本编写
shell实现多级菜单脚本编写 原文:https://www.yuanmas.com/info/2gOwBPvqyb.html 这篇文章主要介绍了Shell实现多级菜单系统安装脚本实例分享,本文脚本用 ...
- shell的while/for脚本的简单入门
shell的while/for脚本的简单入门 while [condition] dodone关键字break跳出循环,continue跳过循环的余下部分. for var in ...;do...d ...
随机推荐
- 用于string对象中字符截取的几种函数总结——语法、参数意义及用途举例
1. charAt():返回指定位置的字符. 语法:stringObject.charAt(index) 参数意义:index 必需,指字符在字符串中的下标.需要注意的是,字符串中第一个字符的下标是 ...
- 【题解】CF45G Prime Problem
[题解]CF45G Prime Problem 哥德巴赫板子题? \(\frac{n(n+1)}{2}\)若是质数,则不需要分了. 上式 若是奇数,那么拆成2和另一个数. 上式 若是偶数吗,直接\(O ...
- Kattis - cardhand Card Hand Sorting 【暴力枚举】
题意 给出 一个扑克牌的序列 求排成一个"有序"序列 最少的插入次数 有序是这样定义的 同一个花色的 必须放在一起 同一花色中的牌 必须是 升序 或者是 降序 然后 A 是最大的 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】
链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- i=i+2 与i+=2
i=i+2 比 i+=2多了一次对变量 i 的运算.后者效率高
- MVC常见错误记录
1 找到了多个与名为“Home”的控制器匹配的类型.如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的 根项目下的RouteCon ...
- Git_学习_04_ 多人协作开发的过程
多人协作的工作模式通常是这样: 1.首先,可以试图用 git push origin branch-name 推送自己的修改: 2.如果推送失败,则因为远程分支比你的本地更新,需要先用 git pul ...
- 「LuoguP1144」 最短路计数(dijkstra
题目描述 给出一个NN个顶点MM条边的无向无权图,顶点编号为1-N1−N.问从顶点11开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 第一行包含22个正整数N,MN,M,为图的顶点数与边 ...
- /boot下面文件说明
config-3.10.0-229.el7.x86_64 <==此版本核心被编译时选择的功能与模组设定档 grub/ <==旧版 grub1 ,不需要理会这目录了! grub2/ < ...
- BZOJ2006:[NOI2010]超级钢琴
浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...