Shell脚本常见使用
echo 命令用于向窗口输出文本
定义变量 your_name=”rrr” 变量名和等号之间不能有空格
使用一个定义过的变量,要在变量名前面加美元符号 如 echo ${your_name} 加花括号是为了帮助解释器识别变量的边界
删除变量 unset variable_name
字符串:
双引号的优点:双引号里可以有变量 双引号里可以出现转义字符 例如:
your_name='qinjx'
str="Hello, I know you are \"$your_name\"! \n"
截取: # 号截取,删除左边字符,保留右边字符。%号截取,删除右边字符,保留左边字符
echo ${var%/*}
定义数组:
数组名=(值1 值2 … 值n) 用括号来表示数组,数组元素用”空格”符号分割开。例如:
array_name=(value0 value1 value2 value3)
array_name[0]=value0
遍历数组 使用@符号可以获取数组中的所有元素,例如:
echo ${array_name[@]}
获取数组长度, 加#
length=${#array_name[@]}
注释:
可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
传递参数:
$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数, $0 为执行的文件名,$# 传递到脚本的参数个数 $* 所有参数,合成一个参数列印 $@ 所有参数,合成多个参数列印
例如:
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
$ ./test.sh 1 2 3
基本运算符:
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如expr
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
布尔运算符: ! 非; -o 或; -a 与;
逻辑运算符 && AND || OR
字符串运算符:
运算符 说明 举例
= 检测两个字符串是否相等,相等返回 true。 [ a = b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ a != b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z
a]返回false。−n检测字符串长度是否为0,不为0返回true。[−n“
a
]
返
回
f
a
l
s
e
。
−
n
检
测
字
符
串
长
度
是
否
为
0
,
不
为
0
返
回
t
r
u
e
。
[
−
n
“
a” ] 返回 true。
str 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
注意:比较两个数字的时候使用 ==
显示
-e 为开启转义
\n 换行 \c 不换行
如: echo -e "OK! \n"
echo "It it a test"
显示结果定向至文件
echo "It is a test" > myfile
输出字符串,不进行转义或取变量(用单引号)
echo '$name\"'
结果 $name\"
显示命令执行结果, 如显示日期
echo `date`
注意: 这里使用的是反引号 `, 而不是单引号 '。
流程控制:
注意:sh的流程控制不可为空,即不可以什么都不写空着。
if
if condition
then
command1
command2
...
commandN
fi
写成一行则是:
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
末尾的fi就是if倒过来拼写
if else
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
例如:
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
if else语句经常与test命令结合使用
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
for 循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
写成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
while 语句
#!/bin/sh
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量
函数
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
结果
-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----
本文部分参考菜鸟联盟 http://www.runoob.com/linux/linux-shell-basic-operators.html