shell脚本学习
用vim或vi等编写Shell脚本的格式是固定的,如下:
#!/bin/sh #comments code
#!
告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误
#
注释行直到此行的结束。
保存文件为filename.sh,之后添加可执行权限
chmod +x filename.sh打印Hello,world的示例:
#!/bin/sh #第一个shell脚本 #声明一个变量a,并赋值 a="Hello,world" #将变量a的值显示的控制台上 echo $a
=
变量赋值paramName=paramValue
echo
在控制台上回显数据,相当于java中的System.out.println()
$
引用某个变量,$a就是引用变量a,也可以使用${a},可嵌套在""中使用
${}
引用某个变量,${a}就是引用变量a的值,这是为了避免混淆.
#!/bin/sh #说明$与${}的区别 a="Hello,world" #会查找变量as,结果显示Test1, echo "Test1,$as" #会查找变量a,结果显示Test2,Hello,worlds echo "Test2,${a}s"
$#
表示命令行参数的个数
$0,$1,...$9,${10},...
$0对应脚本名称,$1对应第一个参数,没有参数时什么都不显示
#!/bin/sh #输出参数个数 echo "参数个数:"$# #输出脚本名称 echo "脚本名称:"$0 #输出第一个参数 echo "第一个参数:"$1
假如此脚本保存为文件hello.sh
lhp@lhp:~/shell_ex$ ./hello.sh 参数个数:0 脚本名称:./hello.sh 第一个参数: lhp@lhp:~/shell_ex$ ./hello.sh 12 参数个数:1 脚本名称:./hello.sh 第一个参数:12
$*
列出所有的参数(没有$0)
if [];then
...
elif [];then
...
else
...
fi
#!/bin/sh if [ $# -gt 3 ];then echo "参数个数大于3" elif [ $# -lt 2 ];then echo "参数个数小于2" else echo "参数个数为3" fi
常用的测试条件有:
[ -f "$file" ] 判断$file是否是一个文件
[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于
[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性
[ -n "$a" ] 判断变量$a是否有值,测试空串用-z
[ "$a" = "$b" ] 判断$a和$b的取值是否相等
[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立
要注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。