Shell脚本快速入门

因为项目需要需用shell写一个linux测试脚本,发现网上此类文章十分杂乱,很难在短时间内上手,所以在此写一个bash shell脚本快速入门。其目的在于对于shell bash没有接触过的人可以看完后就可以实现一些简单脚本。

1. #!/bin/bash

需在脚本第一行添加此句,表明用/bin/bash解释器解释脚本


2. 变量赋值与使用

Bash Shell并不区分数据类型,而是把任何存储在变量中的值都当做字符串。所以不需要声明就可以使用变量。


myname=fiverwyp
myname="fiver  wyp"

可以不加引号赋值一个变量,但等式右边有空格时必须加引号

另外,等式两边不能有空格!

变量使用时需要在前面添加$

echo $myname


如果不加$则会直接输出字符串myname

echo myname

如果变量和其它字符串之间没有空格,需要用大括号包裹变量名,如下

echo  ${myname}ismyname




3.  数组

数组初始化:

A=(0 1 2 3)
数组赋值:
A[0]=1

数组取值:

echo ${A[1]}#1

用变量作为索引来取值:

i=1
echo ${A[$i]}  #1

数组长度:

echo ${#A[@]}  #4


数组全部取出:

echo ${A[@]}  #1 1 2 3
echo ${A[*]}  #1 1 2 3
c=(${A[@]})
echo ${c[0]}  #1


数组清除:

unset A[0]

这里可以总结一下,无论是变量还是数组,在赋值及改变(比如unset)时不需要在前面加$,在使用时需要加$以及{}


4. if

基本结构如下:

if [判断语句];then
 #do something
elif
 #do other thing
else
 #do last thing
fi


 
  

需要注意,if与判断语句之间必须有空格!

判断语句有如下几种:

(1)判断数字大小

int1 -eq int2    两数相等为真 int1 -ne int2    两数不等为真 int1 -gt int2    int1大于int2为真 int1 -ge int2    int1大于等于int2为真 int1 -lt int2    int1小于int2为真 int1 -le int2    int1小于等于int2为真

(2)判断字符串是否相等

str1 = str2      当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str1        当串的长度大于0时为真(串非空) -z str1        当串的长度为0时为真(空串) str1           当串str1为非空时为真

5. for

基本结构如下:

array=(1 2 3)
for i in ${array[@]}
do
  echo $i
done

6. 字符串替换

比如将$var的第一个空格全部替换成下划线,可以这么写:

${var/ /_}
 
  

若是全部空格都替换成下划线

${var// /_}


7. 算术运算

有(()) [] expr let四种方式,比如让m加1

m=$[ m + 1]
m=`expr $m + 1`
m=$(($m + 1))
let m=m+1


8. $?得到命令行输出

有时候需要用到一些命令行,并根据输出进行流程控制,可以用$?指令得到上一次命令行的返回结果,0代表没有错误,1代表有错误。

比如需要判断一个程序是否在运行,可以如下写代码。若不在运行则$?为1,进入if内命令

pgrep function_name
if [ $? -gt 0 ];then
 #do something here
fi
 

9. 脚本传参

在命令行输入scriptName.sh para1 para2 可以向脚本传参,参数之间有空格。$1 $2分别表示第一、二个参数。$@或者$#可取出全部参数,不同的是$@取出的是一个数组,可以for $item in $@ 遍历,$#则是一个字符串。

当不知道参数数量时,可以用$@取出:

i=0
for para in $@
do 
  parameter[$i]=$para
  ((i++))
done



更过使用技巧点击这里

http://bbs.chinaunix.net/thread-218853-1-1.html



你可能感兴趣的:(Shell脚本快速入门)