特殊环境变量
环境变量 | 含义 | 重要程度 |
---|---|---|
$0 | 获取当前脚本的名字 如果你的脚本是全路径执行,则名字也带全路径 basename | * |
$n | 脚本传递的参数 $0被脚本名称占用 $1开始… $9以后需要加{} | * |
$# | 获取传参的总个数 [ $# -ne 2 ] && echo “请输入两个参数” && exit | * |
$? | 获取上一条命令的执行结果 0为成功 非0失败 | * |
$$ | 获取脚本的PID | * |
$! | 获取上一个在后台运行脚本的PID | * |
$* | 获取传参的总个数 如果不加“” 则和$@相同 在循环体如果加了“” 则把参数视为一个整体 “name age test” | ** |
$@ | 获取传参的总个数 如果不加“” 则和$*相同 在循环体如果加了“” 则把参数视为单独的参数 | ** |
$_ | 获取最后一个东东 相当于ESC . |
比较符
符号 | 含义 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
变量扩展的意义
符号 | 含义 |
---|---|
${#oldboy} | 显示这个变量的长度 |
${url#*.} | 删除这个变量开头到第一个.的内容 包括. |
${url##*.} | 删除这个变量开头到最后一个.的内容 包括. (贪婪匹配) |
${url%.*} | 删除这个变量最后一个点到结尾的内容 包括. |
${url%%.*} | 删除这个变量第一个点到结尾的内容 包括. (贪婪匹配) |
用于计算的命令
整数运算
echo “$((3+3))” echo “$[ 3+3 ]”
expr 3 + 3
expr $((3+3))
expr $[ 3+3 ]
let a=3+3 && echo $a
小数运算
awk ‘BEGIN{print 3+3}’
echo “3+3” |bc
python
表达式
符号 | 含义 |
---|---|
-f | 是否存在此文件 |
-d | 是否存在此目录 |
-e | 是否存 |
-x | 是否有执行权限 |
-r | 是否可读 |
-w | 是否可写 |
语法格式
eg:
[root@alice ~]# [ -f /etc/passwd ] && echo "有此文件" || echo "没有此文件"
有此文件
或
[root@alice ~]# test -f /etc/passwd && echo "有此文件" || echo "没有此文件"
有此文件
数字的比较
[ 数字1 运算符 数字2 ]
-eq -lt -gt -le -ge -ne
(()) [[ ]] = > >= <=
变量默认值
${a-defaultvalue}
a如果没有定义,则表达式返回默认值,否则返回a的值;
test]# cat default.sh
#!/bin/bash
a=""
ret1=${a-"/usr/local"}
echo "ret1:" $ret1
test]# sh default.sh
ret1:
test]# cat default.sh
#!/bin/bash
#a=""
ret1=${a-"/usr/local"}
echo "ret1:" $ret1
test]# sh default.sh
ret1: /usr/local
${a:-defaultvalue}
a没有定义或者为空字符串,则表达式返回默认值,否则返回a的值;
test]# cat default.sh
#!/bin/bash
a=""
ret1=${a:-"/usr/local"}
echo "ret1:" $ret1
test]# sh default.sh
ret1: /usr/local
test]# cat default.sh
#!/bin/bash
a="/etc"
ret1=${a:-"/usr/local"}
echo "ret1:" $ret1
test]# sh default.sh
ret1: /etc
test]#