Shell之变量和常见符号
变量
- 变量不需要声明
- 等号的两边不能有空格
- 变量调用:$a 或者 ${a}。{}的作用是区分和其他字符连接使用,比如 ${a}ook
变量 | 变量含义 |
$0 | 返回文件名 |
$1-$9 | 返回第一个-第九个参数 |
$* | 返回所有的参数 |
$# | 返回参数的个数 |
$? | 判断上一条命令是否执行成功.(0:成功 非0:失败) |
常见符号
符号 | 含义 |
> | 覆盖原来的内容 |
>> | 尾部追加 |
; | 执行多条命令 |
| | 管道符 |
|| | 前面的命令执行失败,后面的才可以执行 |
&& | 前面的命令执行成功,后面的才可以执行 |
"" | 输出里面包含的变量值 |
'' | 输出本身,不做任何编译 |
`` | 输出执行命令结果 |
2>/dev/null | 输出错误到无底洞 |
1>/dev/null | 正确输出到无底洞 |
数字计算
1. bc
bc计算器支持浮点运算,争对精度问题,需要指定scale(只对除法,取余,乘幂有效)
[root@user]$ d=`echo "scale=2;5.0/3.0" | bc`
[root@user]$ echo $d
1.66
2.expr
不支持浮点数计算。而且要注意数字与运算符中的空格
[root@user]$ a=`expr 1+1`
[root@user]$ echo $a
1+1
[root@user]$ a=`expr 1 + 1`
[root@user]$ echo $a
2
3.$(()) 或 $[]
同expr
[root@user]$ b=$((1 + 1 ))
[root@user]$ echo $b
2
4.let
不支持浮点运算,不支持输出,只支持赋值
[root@user]$ let b=50/5
[root@user]$ echo $b
10
条件判断
1.整数比较
-lt(less than) 小于 -le(less equal) 小于等于
-eq(equal) 等于 -ne(not equal) 不等于
-ge(greater equal) 大于等于 -gt(greater than) 大于
2.文件权限判断
-r(read) 可读权限 -w(write) 可写权限 -x(execute)可执行权限
3.文件类型判断
-f(file) 文件存在且是常规文件
-d(directory) 文件存在且是目录
-e(existence) 文件存在