栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Shell 编程基础,实战:编写curl小工具,发送post请求

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Shell 编程基础,实战:编写curl小工具,发送post请求

Shell 编程基础,实战:编写curl小工具,发送post请求
  • 数据类型
    • 字符串
    • 数组
  • 运算符
  • 逻辑比较
  • 字符串比较
  • 文件判断
  • 常见语法(if,case,while,函数)
    • if
    • case
    • while
    • function
  • 实战:编写一个curl工具类,用于测试post,发送json参数请求

  • 脚本的执行方式
  1. bash hello.sh
  2. sh hello.sh
  3. ./hello.sh 必须有可执行权限 chmod +x hello.sh
  4. source hello.sh
  • 声明变量
name=hello //=两边不能有空格
echo $name //或 echo ${name}
数据类型 字符串
字符串的声明可以使用 单引号或双引号,或不使用引号,例如:
name="cheng"
name='cheng'
name=cheng
full_name="jack $name" //这里一定要使用双引号,否则$name无法识别为变量
full_name='jack '$name'' //这样也是可以的,建议使用上面的
# 使用
echo $name
-- 输出字符串的长度使用#
echo ${#full_name}

-- 截取字符串长度
echo ${full_name:2:6}  -->ck che
数组
arr=('hello' 'world')  、、中间要以空格隔开
echo ${arr[0]} --hello
echo ${arr[@]} --hello world 取出所有的元素
echo ${#arr[@]} --2 数组长度2

运算符
a=10
b=20
方式一:
echo `expr $a + $b` --30
方式二:
echo $(($a + $b)) --30
方式三:
echo $[a + b] --30

加减乘除取余(+-*/%)使用上述三种方式均可,注意中间运算符两边必须要有空格
逻辑比较
运算符说明语法
==比较两个数是否相等[$a == $b] ,相等返回true
!=比较两个数是否不相等[$a != $b] ,不等返回true
-eq比较两个数字是否相等[$a -eq $b] ,相等返回true
-ne比较两个数字是否不相等[$a -ne $b] ,不相等返回true
-gt比较两个数字大小,数学符号:>[$a -gt $b] ,a大于b等返回true
-lt比较两个数字大小,数学符号:<[$a -lt $b] ,a小于b等返回true
-ge比较两个数字大于等于,数学符号:>=[$a -gt $b] ,a大于等于b等返回true
-le比较两个数字大于等于,数学符号:<=[$a -lt $b] ,a小于等于b等返回true
-o 或||或运算,相当于OR 比较两个两表达式是否相等[$a -lt $b -o 100 < 200 ] ,有一个表达式满足返回true
-a 或&&且运算,相等于and[$a -lt $b -a 100 < 200 ] ,两个表达式都满足返回true
字符串比较
[ $name ] --不为空返回true
[ -z $name ] --字符串长度为0,返回true
[ -n $name ] --字符串长度不为0,返回true
[ $name ] --不为空返回true
[ $a = $b ] --两个字符串是否相等,相等返回true

例如:

#/bin/bash
a=10
b=10
if [ $a = $b ]
then
   echo 'a等于b'
fi

#############
c=1
d=2
if [ $c -lt $d ]
then
   echo 'c小于d'
fi


文件判断
  • -r :可读
  • -w :可写
  • -x :可执行
  • -f : 是普通文件
  • -d : 是文件目录
  • -s :文件不为空
  • -e:文件存在
    例如:
file=/usr/local/hello.sh
if [ -r $file ]
then 
	echo '文件可读'
fi
常见语法(if,case,while,函数) if
if [ ]
then
	#do something 
else
   #do something 
if
case
#/bin/bash
echo '请输入一个数字'
read num
case $num in
   1) echo '您输入了一个1'
   ;;
  2) echo '您输入了一个2'
   ;;
   *) echo '您输入的非1,非2的数字='$num''
esac

while
#/bin/bash
int=0
while(($int <= 10))
do
 echo "数字int=$int"
 let "int++" #let 不需要加$
done

//死循环
while true
do
   do something
done


# while 与if结合使用,获取用户有效输入
echo '请输入url'
while true
do

read -e url
if [ $url ]
    then
        break
    else
        echo 'url输入有误,请重新输入'
fi
done
function
#/bin/bash

function addfun(){
   echo '请输入第一额数'
   read a
   echo '请输入第二个数字'
   read b
   return $(($a + $b))
}

addfun #调用函数
echo "两个数字之和是:$?" # 函数的返回值可以通过$?获取
实战:编写一个curl工具类,用于测试post,发送json参数请求

实现功能:

  1. 可以输入请求参数
  2. 可以输入请求地址
  3. 执行后记录到日志文件
#!/bin/bash

# curl 工具类,实现post请求
cmd=$1
date=`date +'%F %H:%M:%S.%N'`

log_dir=log
log_file=$log_dir/curl-`date +%F`.log


echo '请输入请求参数request body'
read -e  req_param

# read -e :可以退格
echo '请输入url'
while true
do

read -e url
if [ $url ] 
    then
	break
    else 
        echo 'url输入有误,请重新输入'
fi
done

echo "正在请求url:$url ..."

result=
if [ $cmd == 'GET' ] 
then
   result=`curl -X GET  "${req_param}" $url `
else
   result=`curl -X POST -d '${req_param}' $url`
   cmd='POST'
fi
echo $result

# 判断文件是否存在,不存在创建
if [ ! -e $log_dir ]
then 
   mkdir -p $log_dir
fi

echo $log_file
echo "$date request-type:$cmd,  request-body:$req_param request-url:$url , result:$result" >> $log_file

测试

chmod +x curl.sh
./curl.sh GET
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号