shell脚本执行curl命令
问题:shell脚本写了一个简单的curl执行,但是执行不起来结果
从postman里生成的命令如下
curl -X PUT \ https://txxxxxt \ -H 'Authorization: ' \ -H 'CustomHeader: xx' \ -H 'Postman-Token: 937e5aae-9e94-4221-bd30-d6a4eabf6111' \ -H 'cache-control: no-cache'
然后复制到shell文件里
#!/bin/bash if [ -z "$1" ]; then echo "please input param" exit -1 fi
#简单的这么写即可生效
#curl -X GET www.baidu.com
cmd=`curl -X PUT \ https://xx/xxx \ -H 'Authorization: xx' \ -H 'CustomHeader: $1' -s` echo "$cmd"
执行了,但是没完全执行。没生效,后来查询发现shell中单引号 ' 和双引号 "有区别,修改后生效
#!/bin/bash if [ -z "$1" ]; then echo "please input param" exit -1 fi #-s 防止输出这些信息 # % Total % Received % Xferd Average Speed Time Time Time Current # Dload Upload Total Spent Left Speed # 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 cmd=`curl -X PUT \ https://xx/xxx \ -H "Authorization: xx" \ -H "CustomHeader: $1" -s` echo "$cmd"
结论:shell中单引号 ' 和双引号 "有区别
单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.
例如:
n=3 echo '$n' #输出结果:$n echo "$n" #输出结果:3