$+ 的常见用法:
$0 : 脚本的名字
$1 : 传入的第一个变量
$2 : 传入的第二个变量 .....以此类推
$! : 获取上一个进程号
$$ : 当前的进程号
$? : 获取上一条命令的放回值,返回值为0则表示上一条命令没有错误
$* : 代表所有参数
$@ : 与$* 一样
$# : 参数的数量
' ' 单引号原样输出 不会解析变量
" " 双引号可以解析变量
shell 中[ ] 与 [[ ]] 的区别 、
[ ] 遇到空格会进行分词处理
[[ ]] 不会进行分词处理, 判断更准确 (推荐使用)
linux 里的计算器
可以直接进入bc
[root@yigeling lianxi]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4 + 1
5
5 % 2
1
3.5 + 1
4.5
也可以用管道符号:
[root@yigeling lianxi]# echo 3+5 |bc
8
[root@yigeling lianxi]# echo 3.5*2 |bc
7.0
还可以进行判断
返回0表示假,返回1表示真
[root@yigeling lianxi]# echo "3.5>2.5" |bc
1
[root@yigeling lianxi]# echo "3.5<2.5" |bc
0
整数的数值运算:
第一种: $(( 表达式 ))
第二种: $[ 表达式 ] 只适合整数
第三种: expr 表达式
[root@yigeling lianxi]# echo $(( 3+5 ))
8
[root@yigeling lianxi]# echo $[3+5]
8
[root@yigeling lianxi]# echo `expr 3 + 5` 要有空格
8
常见的判断
[ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格。
常用判断:
[ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。
字符串的判断
[ -z STRING ] 如果STRING的长度为零则返回为真,即空是真
[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真
[ STRING1 ] 如果字符串不为空则返回为真,与-n类似
[ STRING1 == STRING2 ] 如果两个字符串相同则返回为真
[ STRING1 != STRING2 ] 如果字符串不相同则返回为真
[ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。
[ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。
数值判断
数值判断
[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,=
[ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,<>
[ INT1 -gt INT2 ] INT1大于INT2返回为真 ,>
[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=
[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<
[ INT1 -le INT2 ] INT1小于等于INT2返回为真,<=
逻辑判断
逻辑判断
[ ! EXPR ] 逻辑非,如果 EXPR 是false则返回为真。
[ EXPR1 -a EXPR2 ] 逻辑与,如果 EXPR1 and EXPR2 全真则返回为真。
[ EXPR1 -o EXPR2 ] 逻辑或,如果 EXPR1 或者 EXPR2 为真则返回为真。
[ ] || [ ] 用OR来合并两个条件
[ ] && [ ] 用AND来合并两个条件
类似python的逻辑短路运算:
使用&& || 来实现
cmd1 && cmd2 如果cmd1执行成功,或者为真,则执行cmd2
cmd1 || cmd2 如果cmd1执行不成功,或者为假,则执行cmd2
cmd1 && cmd2 || cmd3 如果cmd执行成功,就执行cmd2,不成功就执行cmd3
case语句
case $变量名 in
条件1)
执行语句一
;;
条件2)
执行2
;;
esac
[root@yigeling lianxi]# cat case.sh
#!/bin/bash
case $1 in
# 当$1变量等于1时执行
1)
echo "$1 是 1"
;;
# 当$1变量等于2时执行
2)
echo "$1 是 2"
;;
#以上都不是时执行
*)
echo "$1 不是1也不是2"
;;
esac
[root@yigeling lianxi]# bash case.sh 1
1 是 1
[root@yigeling lianxi]# bash case.sh 2
2 是 2
[root@yigeling lianxi]# bash case.sh ab
ab 不是1也不是2