目录
8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别
一、shell脚本的类型
常见的shell分为两大主流:
sh 和 csh
查看系统默认的shell:echo $SHELL
查看系统支持的shell: cat /etc/shells
二、read命令
read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) -s(隐藏输入)
例子:
read -t 30 -p “please input your name: “ NAME
echo $NAME
三、数组
bash只支持一维数组,不支持多维数组
3.1 定义数组
array_name = (li wang xiang zhang) # (小括号做边界、使用空格分离)
3.2 赋值数组元素
array_name[0]=“zhao”
3.3 取得元素个数
${#array_name[@]} 或者 ${#array_name[*]}
3.4 取得单个元素长度
${#array_name[1]}
3.5 取消或删除数组中的元素
unset array_name[4]
四、赋值时使用引号的作用
- •双引号:允许通过$符号引用其他变量值
- •单引号:禁止引用其他变量值,$视为普通字符
- •反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名
五、位置参数
位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推。
$0 是一个特殊变量,它的内容是当前这个shell程序的文件名,所以 $0 不是一个位置参数。
$n: n为数字,$0代表命令本身,$1-$9代表第一到第9个参数,十以上的参数需要用大括号包含,如${10}
$*: 代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数
$@: 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数
$#: 代表命令行中所有参数的个数。添加到shell的参数个数
5.1 $* 和 $@的区别
- 1,$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以"$1" "$2" … "$n" 的形式输出所有参数;
- 2,当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
- 3,"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
-
六、预定义变量
- 预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成。 常见的Shell预定义变量有以下几种.
- $? : 命令执行后返回的状态,0 表示没有错误,非0表示有错误。
- $$ : 当前进程的进程号
- $! : 后台运行的最后一个进程号
- $0 : 当前执行的进程名
七、变量的算术运算
Shell中常见的算术运算符
Shell 中常见的算术运算命令
7.1 双小括号 (()) 数值运算命令的用法
7.2 let 运算命令的用法
let 赋值表达式
7.3 expr 命令的用法
expr 表达式 # 运算符号和数字之间要有空格
7.3.1 expr配合变量计算
expr在Shell中可配合变量进行计算,但需要用反引号将计算表达式括起来。
7.3.2 利用 expr 计算字符串的长度
八、条件测试
8.1 条件测试语句
8.2 文件测试操作符
注:(())不能用于文件测试,文件测试一般常用的是 [ ]
8.3 字符串测试操作符
注: == 和 != 两端要有空格 ,(())不能用于字符测试
8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别
九、if 条件判断语句
9.1 单条件语句
if 条件判断
then
命令
fi
例子:
9.2 多条件语句
if 条件判断
then
命令
elif 条件判断
then
命令
fi
例子:
十、case条件判断语句
case 变量 in
one)
命令
;;
two)
命令
;;
*)
命令
esac
例子:
效果展示:
十一、for循环语句
for 条件
do
命令
done
11.1 例子:计算指定数值之内的和
效果展示:
11.2 例子:区别$*和$@
效果展示:
十二、while循环语句
while 条件
do
命令
done
例子:
效果展示:
十三、shell函数
13.1 语法格式
function name(){
statements
[return values]
}
对各个部分的说明:
- •function是 Shell 中的关键字,专门用来定义函数;
- •name是函数名;
- •statements是函数要执行的代码,也就是一组语句;
- •return value表示函数的返回值,其中 return 是 Shell 关键字,
- 专门用在函数中返回一个值;这一部分可以写也可以不写。
如果你嫌麻烦,函数定义时也可以不写 function 关键字
如果写了 function 关键字,也可以省略函数名后面的小括号
例子:
效果展示: