shell基本语法

1、shell最上面的一行

#!/bin/sh

指的shell的编译器,其中最常见的就是这种,还有几种其他的编译器

 

2、shell文件在Windows下面编辑好了之后直接复制到Linux下面是不能执行的,报错syntax error:unexpected end of file.,原因是dos和Linux之间的文件格式的差异,所以必须把文件设置成Linux能够识别的格式才能够在Linux中执行,具体方法如下,使用vi命令打开文件,设置文件的编码格式,保存,退出,就可以了

vi test.sh

:set fileformat=unix

:wq

 

3、shell中if then之后通常会接上一个fi,如下,其中fi并没有什么实际的意义,是由于shell不同于Java,没有括号{}能够表示语句块的结束,因此加上fi表示if这个语句块结束了,如果不使用fi,程序就会认为then后面的代码都是属于这个语句块里面的。if后面的-d是判断目录是否存在,本段代码的含义是,如果目录不存在则创建目录

 

#!/bin/sh

jmapdir=$HOME/jmaplogs

if [ ! -d $jmapdir ]

then

    mkdir $HOME/jmaplogs

fi

4、通过一个例子说明if条件判断的用法,其中-eq是判断数值是否相等,如果相等则为真,执行then的内容,如果要判断字符串是否相等,可以用“=”;

-eq    等于则为真

-ne    不等于则为真

-gt    大于则为真

-ge    大于等于则为真

-lt    小于则为真

-le    小于等于则为真

 

#!/bin/sh

    if [ $1 -eq $2 ]

    then

       echo "a is equal to b"

    else

       echo "a is not equal to b"

    fi

5、shell的参数传递,其中几个特殊的参数及含义如下

#!/bin/bash

echo "文件名为$0!";

echo "第一个参数为:$1";

echo "参数个数为:$#";

echo "传递的参数作为一个字符串显示:$*";

~

执行命令如下

 

sh 12.sh 1 1 1

结果如下

 

文件名为12.sh

第一个参数为:1

参数个数为:3

传递的参数作为一个字符串显示:1 1 1

6、while do的用法,下面这段的意思是判断$PRG文件是否存在并且是一个符号链接,如果是的话就执行do里面的内容

 

PRG="$0"

while [ -h "$PRG" ]; do

....

done

7、if else-if else 语法格式:

 

#!/bin/sh

a=10

b=20

if [ $1 == $2 ]

then

   echo "$1 等于 $2"

elif [ $1 -gt $2 ]

then

   echo "$1 大于 $2"

elif [ $1 -lt $2 ]

then

   echo "$1 小于 $2"

else

   echo "没有符合的条件"

fi

8、获取当前shell的pid的方法

echo "PID of this script: $$"

 

9、在shell中调用另一个shell(子shell),并引用子shell的变量,可使用source命令

子和父的内容,其中A就是子传给父的参数

 

执行命令和结果

 

10、shell并行执行两条命令的方法,举例如下:

 

for ((i=1;i<=1;i++));do

   {

     sleep 10

     echo first;

   } &

done

echo third;

更高级一点的并发如下,休眠5s后打印"*****执行1号测试计划******",10s后打印第二条,依次打印即30s后执行第六条,40s后打印构建完成"*****构建完成******"

 

for i in {1..6};do

   {

    sleep $[$i*5]

    echo "*****执行$i号测试计划******"

   } &

done

    sleep 40

    echo "*****构建完成******"

11、shell中参数引用的时候,里面还有一个参数的写法如下,循环时,i为1时,其中$i是一个参数,值为1,`eval echo '$'Case${i}`为另外一个参数case1,值为Coverage

 

Case1=Coverage

Case2=DownGradeAllowFail1

Case3=DownGradeAllowFail2

 

for i in {1..9};do

   {

    sleep $[$i*90]

    echo "*****执行$i号测试计划******"

    sh apache-jmeter-3.1/bin/jmeter  -n -t JmxCase/`eval echo '$'Case${i}`.jmx -l result/`eval echo '$'Case${i}`.jtl

   } &

done

    sleep 800

    echo "*****构建完成******"

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值