最近朋友用shell写自动化测试脚本, 请求接口并处理一些逻辑。我写的也不多,只能边查边给他提供帮助。
以下就是这个过程形成的知识点【发现shell又强大,又弱小[笑哭]】
0、把数组转成字符串
本以为像其他语言,有现成的方法直接转换,比如PHP的implode(), Golang的strings.Join(strSlice, “,”)
结果发现Shell并没有,沮丧~
#!/bin/bash ids=(4418564155500784 4418564155500785 4418564155500786 4418564155500787) id="${ids[@]}" echo ${id// /,}
以上输出:
4418564155500784,4418564155500785,4418564155500786,4418564155500787
1、去掉字符串前后的双引号
也没有现成的方法
#!/bin/bash mid='"4418564155500784"' echo $mid # 去掉左边的双引号 tmp=${mid%\"} # 去掉右边的双引号 res=${tmp#\"} echo $res # 同时去掉左右的双引号 ids='"2333"' echo "before parse the ids string is: ${ids}" ret=`echo $ids | sed 's/\"//g'` echo "after parse the ids string is: ${ret}"
以上输出:
"4418564155500784" 4418564155500784 before parse the ids string is: "2333" after parse the ids string is: 2333
2、数组遍历
#!/bin/bash page_count_case=(1 50 51) for page_count in ${page_count_case[@]}; do echo $page_count done
以上输出:
1 50 51
注意:数组中的元素用空格隔开
3、while循环,收集数据到数组中,并输出查看
#!/bin/bash # while循环把变量收集到数组中,输出 int_banch=1 banch_conmments=() while (( $int_banch<=5 )); do banch_conmments[$int_banch]=$int_banch let "int_banch++" done echo "${banch_conmments[@]}" # 1 2 3 4 5
4、source命令引入并执行文件
susu.sh文件在当前目录下,内容如下
#!/bin/bash name='song' if [ $name == "son" ]; then echo 'succ'; elif [ $name == "sha" ]; then echo 'fail'; else echo 'yes'; fi
#!/bin/bash source ./susu.sh // yes
5、算术运算使用expr命令
#!/bin/bash for i in 1 2 3 do echo `expr $i \* 2`; done
以上输出:
192:exercise chuanbo7$ sh tt.sh 2 4 6
注意:
表达式前后加点好`;
运算符要用\转义;
运算符前后要加空格
6、Mac OS下base64命令不支持-d参数
Mac下用–decode, Linux直接用-d
echo -n "salmonl" | base64 c2FsbW9ubA== # Linux base64解码 echo -n "c2FsbW9ubA==" | base64 --d echo -n "c2FsbW9ubA==" | base64 --decode salmonl
7、Mac OS下没有md5sum命令
通过brew安装就好了
brew install md5sha1sum MacBook-Pro-4:~ chuanbo7$ echo -n 'salmonl'|md5sum|cut -d ' ' -f1 1889fa08e135998407d849dc74b023cc 8、if条件语句 可以使用[] [[]] (()), 具体区分待总结 使用==的时候,双等前后必须加空格,不然条件始终为真