shell传递参数
执行shell脚本时,向shell脚本传递参数,在shell脚本内获取参数的格式
$1:获取第一个参数 $2:夺取第二个参数 中 $0 为执行的文件名
#!/bin/bash
echo "第0个参数 "$0
echo "第1个参数 "$1
echo "第2个参数 "$2
echo "第3个参数 "$3
(base) wly@wly-MacBook-Pro Desktop % sh parameter.sh 1 2 3
第0个参数 parameter.sh
第1个参数 1
第2个参数 2
第3个参数 3
参数处理 | 参数说明 |
---|---|
$# | 传递给脚本参数的个数 |
$* | 以单字符串显示所有所有向脚本传递的参数,例如"$*“用「”」括起来,以"$1 $2…"形式输出所有参数 |
$@ | 和$#相同,但是加引号时,并在引号中返回每个参数,例如:“$@” 使用「"」括起来情况,以 “$1” “$2” "$3"形式展示所有的参数 |
运算符
算术运算符:
需要使用expr命令实现算术运算,expr是一个表达式计算工具,使用它能够完成表达式的求值操作
val=`expr 2 + 2 `
注意:
- 运算符之间要有空格
- 条件表达式要放在方括号的中间([])中间,并且要有空格;
例如[ a = = a== a==b]错误,正确的方式 [ $a == $b ] - 乘号(*)前边必须加反斜杠()才能实现乘法运算
- 在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 “*” 不需要转义符号 “” 。
布尔运算符
x=1 y=2
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算 | [ !false ] 返回true |
-o | 或运算 等同于 || | [ $x -lt $y -o $x -gt $y ] 返回true([ $x -lt $y && $x -gt $y ]) |
-a | 与运算等同于&& | [ $x -lt $y -a $y -gt $x ] 返回true([ $x -lt $y && $y -gt $x ]) |
字符串运算符
x=“abc” y=“def”
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等 | [ $x = $y ]返回false |
!= | 检测两个字符串是否不相等,不想等返回true | [ $x != $y ]返回true |
-z | 检测字符串长度是否为零 | [ -z $x ] 返回false |
-n | 检测字符串的长度是否不为0 | [ -n $x ]返回true |
$ | 检测字符串是否不为空 | [ $a ]返回true |
文件测试运算符
运算符 | 说明 |
---|---|
-d | 检测文件是否为目录,如果是 返回true |
-f | 检测文件是否为普通文件 如果是返回true |
-r | 检测文件是否可读,如果是返回true |
-w | 检测文件是否可写,如果是返回true |
-e | 检测文件是否存在,如果存在返回true |
-s | 检测文件是否为空,如果为空,返回true |
test命令
等价于中括号([])的作用类似