入门网站:Shell 教程 | 菜鸟教程
命令总结(部分从脚本中看到的命令):
1.$(cmd) 与 ${变量}
# 如下命令将pwd -P的结果赋值给APP_HOME变量
# 其中$()的作用是执行()中的命令,并获取命令执行结果
# 而${}的作用是获取{}中的变量的值
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P )
2.:-
变量2=${变量1:-字符串},此命令(:-)的作用为检测变量1的值是否存在,如果存在将变量1的值赋值给变量2,如果不存在使用字符串的值给变量2赋值
3.--
# set -- 的作用会修改当前脚本的参数,会影响$argv变量和$1,$@等参数变量的值,但不会影响$0的值
# 下面代码会 将 -Dorg.gradle.appname 至 GradleWrapperMain 内容添加到原来的参数前面
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
#另外一个简单例子(tmp.sh)
#!/bin/bash
echo $0
echo $@
set -- mysqld
echo $0
echo $@
# 命令行执行
bash tmp.sh xxx xxx
# 得到如下结果
tmp.sh
xxx xxx
tmp.sh
mysqld
优秀思路总结:
1.使用 || 短路处理
# 命令中 || 的作用为前面任务失败时,执行后面的exit命令
# 如果 || 前面的任务执行成功,那么会因为短路机制exit命令跳过执行
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
bash builtin command 查询地址: