Shell脚本快速入门

来源:互联网 发布:零趣tk域名 编辑:程序博客网 时间:2024/05/16 01:40

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

1. #!/bin/bash

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


2. 变量赋值与使用

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


<span style="font-size:18px;">myname=fiverwypmyname="fiver  wyp"</span>

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

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

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

<span style="font-size:18px;">echo $myname</span>


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

<span style="font-size:18px;">echo myname</span>

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

<span style="font-size:18px;">echo  ${myname}ismyname</span>




3.  数组

数组初始化:

<span style="font-size:18px;">A=(0 1 2 3)</span>
数组赋值:
<span style="font-size:18px;">A[0]=1</span>

数组取值:

<span style="font-size:18px;">echo ${A[1]}#1</span>

用变量作为索引来取值:

<span style="font-size:18px;">i=1echo ${A[$i]}  #1</span>

数组长度:

<span style="font-size:18px;">echo ${#A[@]}  #4</span>


数组全部取出:

<span style="font-size:18px;">echo ${A[@]}  #1 1 2 3echo ${A[*]}  #1 1 2 3c=(${A[@]})echo ${c[0]}  #1</span>


数组清除:

<span style="font-size:18px;">unset A[0]</span>

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


4. if

基本结构如下:

if [判断语句];then #do somethingelif #do other thingelse #do last thingfi


需要注意,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

基本结构如下:

<span style="font-size:18px;">array=(1 2 3)for i in ${array[@]}do  echo $idone</span>

6. 字符串替换

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

<span style="font-size:18px;"></span><pre name="code" class="plain">${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内命令

<span style="font-size:18px;">pgrep function_nameif [ $? -gt 0 ];then #do something herefi</span> 

9. 脚本传参

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

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

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



更过使用技巧点击这里

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



0 0
原创粉丝点击