shell脚本实用初级入门二

最近朋友用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条件语句
可以使用[] [[]] (()), 具体区分待总结
使用==的时候,双等前后必须加空格,不然条件始终为真

发表评论

电子邮件地址不会被公开。 必填项已用*标注