shell 中 "${1:-}"怎么理解

1 $1是函数的第一个参数2 看替换的定义,${varname:-word},如果varname存在且非null,则返回其值;否则,返回word。用途:如果变量未定义,则返回默认值。3 上述替换中的word是空,即,如果1没...

1 $1是函数的第一个参数
2 看替换的定义,${varname:-word},如果varname存在且非null,则返回其值;否则,返回word。用途:如果变量未定义,则返回默认值。
3 上述替换中的word是空,即,如果1没有定义,就返回空


所以,${1:-}的意思就是说,如果函数有第一个参数,就返回这个参数,如果没有,就返回空。


其实我们平常都不写得这么麻烦,就直接说 [ -n "$1" ],这个脚本写成这个样子,大概是为了严谨?我学习一下先,说不定还真是我遗漏了什么。



shell脚本中set -e作用

最近学习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"

ddd.webp


可以看到随着 echo " hello oracle" 这条指令运行完本 整个脚本执行完毕,后面的 echo " hello db2" 没有执行!



  • 发表于 2020-12-11 14:31
  • 阅读 ( 52 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章