测试工作常用Linux shell命令-bash基础之脚本编写

脚本涉及

* 注释
* 传入参数
* 函数
* 执行
* 调试

1、注释

#以后的语句,shell不会解析。 
多行注释可以考虑采用:<<

2、传参

$0 表示执行的程序,是相对于执行目录的路径;
$1,$2,$3分别表示第几个参数。
bash最多只支持传入9个参数,如果超过了9个,想要传入的话就需要在传入参数的索引外加上花括号{}

3、函数

[function] name() {
..
}
Function 可以省略。除了可以在脚本文件中使用函数外, 还可以shell中定义。这些定义会在本次shell结束后消失。
如果没有return,返回值是最后一句指令的返回值。

3、执行方式

chmod u+x xxx.sh; ./xxx.sh
bash xxx.sh (这种方式会开启一个sub shell)
source xxx.sh (在当前shell中执行 . Xxx.sh 同义)

例1演示

# test1.sh脚本中的内容如下
echo "获取脚本执行的参数: $0"
echo "获取第一个参数:$1"
echo "获取第二个参数:$2"
echo "获取参数的个数:$#"
echo "获取到的参数(str):$*"
echo "获取到的参数(每一个参数都是一个str):$@"
echo "获取当前进程的ID号(PID):$$"
[16210504@izuf60jasqavbxb9efockpz test]$ ./test1.sh 1 2 3 4 5
获取脚本执行的参数: ./test1.sh
获取第一个参数:1
获取第二个参数:2
获取参数的个数:5
获取到的参数(str):1 2 3 4 5
获取到的参数(每一个参数都是一个str):1 2 3 4 5
获取当前进程的ID号(PID):22183

可以看到传入的参数被分别读取,其中$*$@都获取到了全部的参数,实际上是不同的:

$*获取到的是一个str整体:"1 2 3 4 5"
$@获取到的是单个的str: "1" "2" "3" "4" "5"

例2演示
bash最多只支持传入9个参数,如果超过了9个,想要传入的话就需要在传入参数的索引外加上花括号{}

#脚本内容如下
functest(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10}"
echo "第十一个参数为 ${11} !"
echo "参数的总个数有 $# 个!"

}

functest a b c d e f g h i j k l m

执行脚本

[16210504@izuf60jasqavbxb9efockpz test]$ ./test2.sh
第一个参数为 a !
第二个参数为 b !
第十个参数为 a0 !
第十个参数为 j
第十一个参数为 k !
参数的总个数有 13 个!

由结果可以看到,同样是取第十个参数,第一个取到的是a0,第二个取到的才是正确的参数j,这是因为超过9个参数后,脚本认为$10其实是$1 再加上0;而$1代表第一个参数a,所以就输出了a0;

例3演示
先说需求:任意输入内容,将输入内容打印出来,一直循环操作;若输入quit就退出

#脚本内容如下
while true
do read -p "please enter you number: " input
if [ $input == "quit" ]
 then
 echo "您已选择了退出"
  break
else
 echo "您输入的内容是:"$input
fi
done

执行脚本:

[16210504@izuf60jasqavbxb9efockpz Allen_qin]$ ./InputTest.sh
please enter you number: 1
您输入的内容是:1
please enter you number: 2
您输入的内容是:2
please enter you number: 3
您输入的内容是:3
please enter you number: 4
您输入的内容是:4
please enter you number: ggg
您输入的内容是:ggg
please enter you number: quit
您已选择了退出

例4演示
需求说明:任意输入两个数字,输出数字的和、差、乘、商

#脚本内容如下
read -p "enter1:" num1
read -p "enter2:" num2
echo "和"=$((num1+num2))
echo "差"=$((num1-num2))
echo "积"=$((num1*num2))
echo "商"=$((num1/num2))

执行结果:

[16210504@izuf60jasqavbxb9efockpz Allen_qin]$ ./test4.sh
enter1:1
enter2:2
和=3
差=-1
积=2
商=0
  • 由上面的结果看到一个现象,除法的结果是0,应该是0.5才对,这是因为在bash中默认取整;我们想要得到类似浮点型的结果,需要借助于awk的方法来实现:
    awk ”BEGIN{}"可以运行自定义命令,但是想要调用外部定义的变量,需要使用\"$var\"形式
    #修改后的脚本
    read -p "enter1:" num1
    read -p "enter2:" num2
    echo "和"=$((num1+num2))
    echo "差"=$((num1-num2))
    echo "积"=$((num1*num2))
    echo "除"=`awk "BEGIN{print \"$num1\"/\"$num2\"}"`
    
    运行结果:
    [16210504@izuf60jasqavbxb9efockpz test]$ ./test4.sh
    enter1:1
    enter2:2
    和=3
    差=-1
    积=2
    除=0.5
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值