Shell脚本教程-[1]
shell 命令的基本格式:command [选项] [参数] //[]可选的,可有可无的
[选项]:command命令的[选项]可以执行 command --help 查看
[参数]: 参数是命令的操作对象,可以是文件,目录,用户和进程等都可以作为参数被命令操作,如果执行中的命令没有带参数,则是此命令有一个默认参数
使用一个定义过的变量只要在变量名前面加美元符号即可,
int user = androidodm.com
变量名外面的花括号是可选的加不加随便你自己,但为方便阅读建议加{},加花括号是为了解释器识别变量的边界
$user = ${user}
unset username //删除变量
command1;command2...
--不管command1命令是否执行成功,command2命令都执行。
command1&command2...
--command1命令和command2命令同时执行
command1&&command2...
--只在command1命令执行后,才执行command2命令。
如:
如果白天工作下载或是编译代码太浪费时间可以,将任何放在指定时间执行命令自动编译:
sleep 7h && make -j8 2>&1 |tee build-log.txt
单行注释 以 # 开头的行就是注释,会被解释器忽略。
传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。如 val=`expr 2 + 2`
= 放在别的地方是赋值,放在if [ ] 里就是字符串等于,shell里面没有==的,那是c语言的等于
逻辑判断
if 判断语句;then
command
fi
if 判断语句
then
command
else
command
fi
条件
If [ $ANS ] 等价于 if [ -n $ANS ] //如果字符串变量非空(then) , 空(else)
echo "input your choice:"
read ANS
if [ $ANS ]
then
echo no empty
else
echo empth
fi
传统if 从句子——以条件表达式作为 if条件
if [ 条件表达式 ]
then
command
command
command
else
command
command
fi
文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式
判断数值大小使用((k>100)),还可以使用[],但不能使用>、<、=这样的符号了,要使用-lt(小于)、-gt(大于)、-le(小于或等于)、-ge(大于或等于)、-eq(等于)、-ne(不等于)
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式
If [ $a = $b ] 如果string1等于string2 ,字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
评论