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: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:UID
echo HOME: HOMEechoPATH:PATH
(脚本中有一些变量的使用)
如果想显示$符,可以加\,如下所示
echo "The cost of the item is \$15"
用户变量
#!/bin/bash
# testing variables
days=10
guest="Jiqing"
echo "guestcheckedindays days ago"
days=5
guest="Jessica"
echo "guestcheckedindays days ago"
(定义用户自己的变量days,guest。这一点跟php有点相近)
#!/bin/bash
# assigning a variable value to another variable
value1=10
value2=value1echoTheresultvalueisvalue2
(用变量给变量赋值)
反引号``
反引号允许将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.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/var1`
echo "The value of var3 is:"var3(定义两个变量,用expr计算结果,保存到var3中,输出结果)b.使用括号[]
echo [1+2](输出3) #!/bin/bash var1=100 var2=50 var3=45 var4=[var1∗(var2-var3)]echoThefinalresultisvar4
(括号让数学计算更加简便了,结果为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/var2"|bc‘echoTheanswerforthisisvar3
(结果为2.2222)
#!/bin/bash
var1=20
var2=3.14159
var3=`echo " scale=4;var1∗var1"|bc`
var4=`echo " scale=4;var3∗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 = (var1*var2)b1=(var3*var4)a1+b1EOF‘echoTheanswerisvar5
退出脚本
$?保存最后一条命令执行结束的退出状态。
一条命令成功完成的退出状态是0。如果命令执行错误,那么退出状态就会是一个正整数。
0 完成
1 未知错误
2 误用shell
126 命令无法执行
127 没有找到命令
..
exit命令允许在脚本结束时,指定一个退出状态。
本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3196070.html,如需转载请自行联系原作者