日前写了一个自动打包上传的脚本,首次使用shell编程,过程遇到诸多问题,现做此记录。
1.判断前一条命令是否执行成功
if [ $? -ne 0 ]; then
echo "fail"
else
echo "success"
fi
或者
if [ $? -eq 0 ]; then
echo "success"
else
echo "fail"
fi
shell中:
参数处理 | 说明 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
ge | 大于等于 |
le | 小于等于 |
2. 函数参数
在Shell中,在声明函数的时候不用形参,调用函数时可以向其传递参数。在函数体内部,通过 $n
的形式来获取参数的值,例如,$1
表示第一个参数,$2
表示第二个参数...
注意,$10
不能获取第十个参数,获取第十个参数需要${10}
。当n>=10时,需要使用${n}
来获取参数。
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
$?
解释了上文第一条,判断命令是否执行成功
#!/bin/bash
funWithParam(){
echo "The value of the first parameter is $1 !"
echo "The value of the second parameter is $2 !"
echo "The value of the tenth parameter is $10 !"
echo "The value of the tenth parameter is ${10} !"
echo "The value of the eleventh parameter is ${11} !"
echo "The amount of the parameters is $# !"
echo "The string of the parameters is $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
输出结果:

3.打开浏览器
一句话用Safari打开网页
open -a "/Applications/Safari.app" http://www.baidu.com
4. 上传、下载进度效果

只需将curl 用$()
包裹起来
$(curl -F "file=@$1" \
-F "uKey=$2" \
-F "_api_key=$3" \
https://www.pgyer.com/apiv2/app/upload)
网友评论