shell script学习笔记2

来源:互联网 发布:淘宝处女红坑了多少人 编辑:程序博客网 时间:2024/05/17 09:09


bash中的变量都是无类型的,可以通过declare来声明int型变量


$0, $1, $2 .... $9, ${10}, ${11}, ...
如果参数超过9个,那就需要用${10}的方式
$#
参数数目
$*, $@
参数集合
${!#}
最后一个参数


整数比较
-eq, -ne, -gt, -ge, -lt, -le,  如 if [ "$a" -eq "$b" ]
>= <= > < 需要双括号,如(("$a" < "$b"))


字符串比较
[[ $a == z* ]] 如果$a以"z"开头,那么将为true
[[ $a == "z*" ]] 如果$a等于z*,那么将为true
[ $a == z* ] File globbing和word splitting将会发生
[ "$a" == "z*" ] 如果$a等于z*,那么结果为true
-n 使用-n在[]结构中测试必须要用""把变量引起来,否则会出一些问题
比如 if [ -n $string ];then echo "not null";fi, string虽然未声明,但是结果会是not null
纠正这个结果的做法是 if [ -n "$string" ]; then echo "not null";fi


变量替换
filename="hello.txt"
echo ${filename##*.}  # txt
#与##的区别在于一个是最短匹配模式,一个是最长匹配模式


if [ $condition1 ] && [ $condition2 ]
if [ $condition1 -a $condition2 ]
if [[ $condition1 && $condition2 ]]
-a 逻辑与
-o 逻辑或
在[[]]中使用,[[ condition1 && condition2 ]]
-o -a 一般在test或者[]中使用,if [ "$exp1" -a "$exp2" ]
如果用在算数计算中,那
$((1 && 2)) # 1
$((0 && 2)) # 0
$((1 || 0)) # 1
$((0 || 0)) # 0


算数计算的几种方法
let "n=$n+1"
let "n=n+1"
let "n++"
((n=$n+1))
((n++))
n=$(($n+1))
双圆括号中的表达式是C风格的,所以可以加空格,可以不带$来引用参数。


数字常量
let "dec=32" # 32
let "oct=032"
echo $oct #26
let "hex=0x32"
echo $hex #50
可以自己设置进制 BASE#NUMBER (BASE 范围 2-64)
let "bin=2#101"
echo $bin #5

原创粉丝点击