shell学习:
shell 脚本格式:文件以.sh结尾,文件顶行输入:#!/bin/bash
变量: 变量名=变量值 获取变量值:$变量名 环境变量 使用export 变量名 这样在任何位置都可以获取到变量值;shell 默认赋值变量都是字符串
$0 shell文件名;$n 第n个变量; $# 变量数量; $* 所有变量; $@ 所有变量;$? 0 最近的命令成功 其他值 最近的命令失败;
运算符:$[3*2-4]
判断条件 [ 1 -lt 2 ]
if语句:
if [ condition ]
then
echo a
elif
then
echo b
else
echo c
fi
case语句:
case $1 in
1)
echo 1
;;
2)
echo 2
;;
*)
echo *
;;
esac
for 循环:
s=0
for((i=0; i <= 100; i++))
do
s=$[$s+i]
done
echo $s
while循环:
while [ i -lt 100 ]
do
echo 1
i=$[$i+1]
done
read:
read -t 7 -p "please write" write
echo write
函数:
basename 返回文件最底层的名字
basename /Users/liyanqiang/Desktop/for.sh
输出:for.sh
dirname 获取文件的路径
dirname /Users/liyanqiang/Desktop/for.sh
输出:/Users/liyanqiang/Desktop
自定义函数(使用比较少):
function sum()
{
s=$[$1+$2]
echo $s
}
sum $1 $2
shell工具:
cut:生产会使用比如异常之后读取线上日志,截取用户id
cut -d ‘ ’ -f 3 filename 参数说明: -f 列号; -d 分割符; 默认分割符是制表符;3- 获取3之后的所有字段
cat cut.txt|grep guan
输出:guan zhen
cat cut.txt|grep guan | cut -d ' ' -f 1
输出:guan
sed:生产使用较少
awk:强大的文本分析工具,把文件逐行的读入,以空格为默认分割符将每行切片,切开的部分再进行分析处理;
awk -F':' '/a/{print $1}' cut.txt 注意一定要是单引号 '{print $1}' ;
-
正则表达式:正则表达式用/ /加在中间
-
命令放在{}中间
awk系统提供的变量:NR 当前行号;NF 切割后的列数; FILENAME 文件名;
awk -v i=0 '/.+/ {i=i+$2} END {print i}' sort.txt
输出:173 END在最后执行的命令
sort:排序
sort -t ‘ ’ -nrk 2 以 空格 分割 第二列大小倒叙排序;
--------------------------------------------------------------------------------------------------
file=$1
url='10.160.62.11:8088/astonmartin/manager/handle_problem/addCoupon?'
echo ${file}
while read line
do
array=(`echo $line | tr ',' ' '`);
inviterPhone=${array[0]};
inviteePhone=${array[1]};
inviteeOrderId=${array[2]};
echo ${inviterPhone} ^ ${inviteePhone} ^ ${inviteeOrderId};
echo "curl -X GET (10.160.62.11:8088//astonmartin/manager/handle_problem/addCoupon?inviterPhone=${inviterPhone}&inviteePhone=${inviteePhone}&inviteeOrderId=${inviteeOrderId});" >> curl.text;
echo start;
curl -X GET "10.160.62.11:8088//astonmartin/manager/handle_problem/addCoupon?inviterPhone=${inviterPhone}&inviteePhone=${inviteePhone}&inviteeOrderId=${inviteeOrderId}";
echo
done < $file
注意该脚本curl命令有点问题,缺少 '' 造成curl失败可以将 curl语句输出到文件curl中,然后拷贝出来进行操作