1 $1是函数的第一个参数
2 看替换的定义,${varname:-word},如果varname存在且非null,则返回其值;否则,返回word。用途:如果变量未定义,则返回默认值。
3 上述替换中的word是空,即,如果1没有定义,就返回空
所以,${1:-}的意思就是说,如果函数有第一个参数,就返回这个参数,如果没有,就返回空。
其实我们平常都不写得这么麻烦,就直接说 [ -n "$1" ],这个脚本写成这个样子,大概是为了严谨?我学习一下先,说不定还真是我遗漏了什么。
最近学习shell脚本想到一个问题,如果脚本中出现了一条异常语句,甚至可以影响整个脚本的使用,那么是否有一旦出现问题就可以及时停止的方法呢?在shell脚本中set命令就可以轻松实现。set命令的-e参数,linux系统自带的说明是:"Exit immediately if a simple command exits with a non-zero status.",也就是说,在"set -e"之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出,那么就可以避免一些脚本的危险操作。
文件描述符
shell中描述符一共有12个
0 代表标准输入
1 代表标准输出
2 错误输出
其他 3-9 都是空白描述符
exec3>&1 4>&2 1>> bash.log 2>&1
其含义是: 复制标准输出到3 ,错误输出到 4 ,把 3 4 保存在bash.log 这个文件中。
./bash.sh >> bash.log 2>&1
其含义是:将bash.sh脚本执行的标准输出和错误输出追加重定向到 bash.log
如果exec 跟的是其他命令,则其他命令结束后,本shell也随之停止
cat test_exec.sh #################### !/bin/bash echo"Hello mysql" exec echo"Hello oracle" echo"Hello sqlserver"

可以看到随着 echo " hello oracle" 这条指令运行完本 整个脚本执行完毕,后面的 echo " hello db2" 没有执行!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!