创建可执行shell脚本
创建shell脚本文件,且文件第一行指定要使用的shell。其格式为:
#!/bin/bash
指定shell脚本的路径,可将shell脚本文件所处的目录添加到PATH环境变量中;或者在 提示符中用绝对或相对路径来引用shell脚本文件。如: ./stest
文件添加执行权限:
chmod u+x stest
显示消息
echo命令可使控制台打印消息。
默认情况下,不需要使用引号将显示的文本字符串圈起来;如果文本中使用了一种引号,可用另一种将字符串圈起来:
echo I am hh
echo "I'm hh"
echo 'he says:"hh"'
使用变量
环境变量
shell维护着 一组环境变量,用来记录特定的系统信息。
可以在环境变量名称前加个美元符
来在脚本中使用这些变量。如果要在脚本中使用
这个字符,需要加反斜线\转义。
用户变量
- 用户变量可以是任何不超过20个字母、数字或下划线的文本字符串。
- 用户变量区分大小写,Var1和var1是不同的。
- shell脚本会自动决定变量值的数据类型。
- 在脚本的整个生命周期里,shell脚本中定义的变量会一致保持着它们的值,在shell脚本完成时删除掉。
- 用户变量可通过美元符$引用。
反引号
反引号允许你将shell命令的输出赋给变量。必须用反引号把整个命令行命令圈起来:today = date +%y-%m-%d
重定向输入和输出
输出重定向
大于号(>)将命令的输出重定向到一个文件中,如 date>test,将date命令的输出重定向到test文件中。test文件不存在则创建;存在则覆盖原来的文件数据。
双大于号(>>)会追加数据 ,不会覆盖原有数据。
输入重定向
将文件中的内容重定向到命令,符号是小于号(<),如 wc
管道
管道连接可以重定向输出到另一个命令。符号是”|”。 command1 | command2
不要以为管道连接会一个一个地运行。Linux系统会同时运行这些命令,在系统内部将它们连接起来。
管道最流行的用法之一是将命令产生的长输出结果通过管道传送给more命令,如 ls -l | more
执行数学运算
expr命令
expr命令允许在命令行上处理数学表达式。有些命令操作符有其他意思,如*,需要反斜线\转义。
在脚本中,需要反引号来获取expr命令的输出
使用方括号
用美元符和方括号(
[operation])将数学表达式圈起来,如echo
[5*3]
方括号中的运算符也无需转义,例如shell知道方括号中的*不是通配符,而是乘号
退出脚本
shell中运行的每个命令都使用退出状态码来告诉shell完成了处理。退出状态码是一个0-255之间的整数值。
查看退出状态码
Linux提供了$?专属变量来保存上个执行的命名的退出状态码。
按照惯例,一个成功结束的命令的退出状态码是0,如果命令结束时有错误,退出状态码就是一个正数。无效命令会返回退出状态码127。
exit命令
exit命令允许你在脚本结束时指定一个退出状态码:exit 5