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解释脚本的时候就会出错




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。