Linux&shell之Shell脚本

简介:
使用多条命令
shell脚本的关键是可以输入多条命令,甚至可以将一条命令的结果传递给另一条命令。
date;who(两个命令shell脚本的写法)

创建shell脚本
1.将shell命令放置到一个文本文件中
2.指明所使用的shell,比如#!/bin/bash
3.可以用#注释,但是一般注释不会被读取,第一行除外
案例
#!/bin/bash
#This script displays the date and who's logged on
date
who
4.保存为test1
5.将shell脚本文件所在的目录添加到PATH环境变量中(
a.修改~/.bash_profile
PATH= PATH:PATH: HOME/bin:/home/jiqing9006/shellscript
export PATH
b.执行source ~/.bash_profile)
6.在命令行提示符中使用文件的绝对路径或相对路径来引用该shell脚本

显示消息
echo Let's see if this'll work(输出字符串,如果有单引号最好将整个字符串包在“”当中,否则单引号可能不会被输出。)
echo -n "The time and date are:"
date(-n让字符串与执行结果显示在一行中)

使用变量
变量允许在shell脚本中暂存信息,以便与脚本中其他命令一起使用。
#!/bin/bash
#display user information from the system.
echo "User info for userid: USER"echoUID:USER"echoUID: UID
echo HOME:  HOMEechoPATH:HOMEechoPATH: PATH
(脚本中有一些变量的使用)
如果想显示$符,可以加\,如下所示
echo "The cost of the item is \$15"

用户变量
#!/bin/bash
# testing variables
days=10
guest="Jiqing"
echo " guestcheckedinguestcheckedin days days ago"
days=5
guest="Jessica"
echo " guestcheckedinguestcheckedin days days ago"
(定义用户自己的变量days,guest。这一点跟php有点相近)
#!/bin/bash
# assigning a variable value to another variable 
value1=10
value2= value1echoTheresultvalueisvalue1echoTheresultvalueis value2
(用变量给变量赋值)

反引号``
反引号允许将shell命令的输出赋值给变量。必须将整个命令行命令用反引号包围起来。
testing=`date`(注意不是单引号,是~下面的那么符号)
#using the backtick character
testing=`date`
echo "The date and time are:"  testing  #!/bin/bash  #using the backtick character today=`date +%y%m%d` ls /usr/bin -al > log.testing  #!/bin/bash  #using the backtick character today=`date +%y%m%d` ls /usr/bin -al > log. today(将ls /usr/bin -al 查询出来的结果写到log.$today文件中,执行完之后会发现新增一个log文件,里面都是查询出来的内容)

重定向输入输出
有时候想通过命令保存输出,而不是只在显示器显示输出。
输出重定向
date >test6(将date指令查询的结果保存到文件test6中)
date >>test6(将信息追加到test6文件中)

输入重定向(与输出相反的动作)
wc <test6(将文本文件的内容重定向到wc命令下,供wc统计使用)

管道
有时候需要将一个命令的输出发送到另一个命令的输入。
rpm -qa(列出所有被安装的rpm package )
|
将一个命令的输出发送到另一个命令的输入。
rpm -qa >rpm.list
sort rpm.list
(等价于rpm -qa|sort)
亦可以将重定向技术与管道结合使用
rpm -qa |sort >rpmlist

数学计算
a.expr命令
expr 1 + 2(注意要用空格,吓死我了,以为不能用来着)
expr 5 \* 2(使用乘法需要加反斜杠)
#!/bin/bash
#An example of using the expr command
var1=10
var2=20
var3=`expr  var2/var2/ var1`
echo "The value of var3 is:" var3exprvar3b.使var3(定义两个变量,用expr计算结果,保存到var3中,输出结果)b.使用括号 []
echo  [1+2](输出3) #!/bin/bash var1=100 var2=50 var3=45 var4=[1+2](输出3) #!/bin/bash var1=100 var2=50 var3=45 var4= [ var1(var1∗( var2- var3)]echoThefinalresultisvar3)]echoThefinalresultis var4
(括号让数学计算更加简便了,结果为500)
c.浮点解决方案
bash计算器实际上是一种编程语言,该语言允许在命令行中输入浮点表达式,然后解释表达式并计算它们,最后返回结果。
输入bc进入指令模式
输入quit退出指令模式
在脚本中使用bc
#!/bin/bash
var1=`echo " scale=4;3.44/5"|bc`
echo The answer is  var1 (将指令的结果保存给变量var1,指令中用了管道技术,输出指令给bc,bc执行之后返回结果) 来看更多的例子 #!/bin/bash var1=100 var2=45 var3=`echo " scale=4;var1 (将指令的结果保存给变量var1,指令中用了管道技术,输出指令给bc,bc执行之后返回结果) 来看更多的例子 #!/bin/bash var1=100 var2=45 var3=`echo " scale=4; var1/ var2"|bcechoTheanswerforthisisvar2"|bc‘echoTheanswerforthisis var3
(结果为2.2222)

#!/bin/bash
var1=20
var2=3.14159
var3=`echo " scale=4; var1var1∗ var1"|bc`
var4=`echo " scale=4; var3var3∗ var2"|bc`
echo The answer is  var4 (计算圆的面积) 还可以用EOF来计算,更加的方便,清晰 #!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71  var5=`bc<<EOF scale = 4 al = (var4 (计算圆的面积) 还可以用EOF来计算,更加的方便,清晰 #!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71  var5=`bc<<EOF scale = 4 al = ( var1* var2)b1=(var2)b1=( var3* var4)a1+b1EOFechoTheanswerisvar4)a1+b1EOF‘echoTheansweris var5

退出脚本
$?保存最后一条命令执行结束的退出状态。
一条命令成功完成的退出状态是0。如果命令执行错误,那么退出状态就会是一个正整数。
0 完成
1 未知错误
2 误用shell
126 命令无法执行
127 没有找到命令
..

exit命令允许在脚本结束时,指定一个退出状态。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3196070.html,如需转载请自行联系原作者

相关文章
|
12天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
2天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
13 0
|
3天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
4天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
16 1
|
8天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
137 0
|
8天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
124 0
|
10天前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)
|
12天前
|
弹性计算 Shell Linux
ecs服务器shell常用脚本练习(六)
【4月更文挑战第4天】shell代码训练(六)
108 0
|
13天前
|
Shell Linux
【Linux】12. 模拟实现shell
【Linux】12. 模拟实现shell
27 2
|
17天前
|
弹性计算 Shell 应用服务中间件
ecs服务器shell常用脚本练习(四)
【4月更文挑战第4天】shell代码训练(四)
96 0