一、变量
1、变量替换和赋值
引用变量值 $ 赋值 =
2、环境变量
3、位置参数
作为交互时的输入 $0脚本名字,$1第一个参数 ,但是从第10个参数开始就要用花括号括起来${10}
二、引用
"" 双引号 引用除美元符号,反引号,反斜线之外的所有字符
'' 单引号 引用所有字符
`` 反引号 将内容解释为系统命令
\ 反斜线 转义符
三、命令替换 (将命令的标准输出作为值赋给某个变量)
`Linux命令` 或者 ${ Linux 命令 }
三、测试结构也就是比较结构[ ] 左右中括号前后均要又空格
1、整数比较
[ num1 operator num2 ] [ 1 -gt 2 ]
2、浮点数比较 需要借助bc计算器
`echo '1.1>1' | bc`
3、字符串比较
test "$str" 返回字符串str是否不为空 注意其中的双引号不能少
test -n "$str" 返回字符串str是否为空
[ "$str1" = "$str2" ] [ "$str1" != "$str2"]
4、文件操作符
test file_operator File
[ file_operator file ] 如 [ -f filename ] 是否为文件
5、逻辑运算符
[ ! expression ] 非 [ expression1 -a expression2 ] 与 [ expression1 -o expression2 ] 或
四、判断
1、if结构
if expression
then
command
else
command
fi
或者
if expression
then
command
elif expression
then command
else
command
fi
2、case结构
case variable in
value1)
command;;
value2)
command;;
valueN)
command;;
*)
command;;
esac
3、列表for循环
for variable in 1 2 3 4 5
do
echo "Hello ,$variable"
done
4、不带列表的for循环(通过命令行传递列表)
for argument
do
echo "$argument"
done
5、类C风格的for循环
for(( expre1;expre2;expr3 ))
do
command
done
如:
for(( interger = 1;integer <= 5;integer++ ))
do
echo "$interger"
done
六、变量的高级用法
1、${#....}和expr length 得字符串得长度
2、expr index $string $substring 在字符串$string上匹配$substring中字符第一次出现的位置
3、expr match $string $substring
在string的开头匹配substring字符串,返回匹配到substring字符串的长度,substring可以时字符串也可以是正则表达式
如:string="Speeding up small jobs in Hadoop"
expr match "$string" Spe
3
4、抽取子串${...}和expre
${string:position} ${string:postion:length} //从左边开始截取
${string: -position} #{string:(position)} //从右边开始截取
5、有类型的变量
declare [选项] 变量名 选项有 -r (只读) -i(整形) -a(数组) -x(环境变量)
6、间接变量引用
如果一个变量的值是另一个变量的名字,从第一个变量引用第二个变量的值就称为间接变量引用
两种格式表示 eval tempvar=\$$variable 和 tempvar=${!variable}
那么直接引用与间接引用有什么区别呢,看下述例子
variable1=variable2
variable2=Hadoop
echo "varable1=$variable1" //直接引用输出variable2
eval tempvar=\$$variable1
echo "tempvar = $tempvar" //间接引用输出Hadoop
七、函数
1、函数定义 function func_name(){}
2、脚本中放置多个函数,脚本执行时按照调用函数的顺序执行这些函数。
3、函数相互调用,直接通过函数名调用