Bash Shell学习
各种符号$0 $1 $# $@ $* $? $$ 含义
https://blog.csdn.net/daocaokafei/article/details/120050007
这篇文章很基础,很不错。
其它文章:https://blog.csdn.net/jiezi2016/article/details/79649382
set -e 含义
https://blog.csdn.net/xiaofei125145/article/details/39345331
这句话的意思是在shell脚本中,设置一个选项,如果在脚本执行过程中出现了返回值非零的情况,那么整个脚本就会立即退出。
DIR=“ ( c d " ( cd " (cd"( dirname “${BASH_SOURCE[0]}” )” && pwd )"含义
https://blog.csdn.net/LL845876425/article/details/93543313
这句话得到shell脚本文件所在完整路径(绝对路径)并把结果赋值给DIR,并得到文件名(无论source, sh, . 三种调用方式),且不改变shell的当前目录。
$(cd $(dirname $0);pwd) 含义
https://blog.csdn.net/qq_20417499/article/details/103308076
与上面的类似,获取shell脚本所在目录的绝对路径。不能直接用pwd,因为如果在脚本目录之外调用该脚本,返回的是调用命令所在的目录而不是脚本所在目录。
source ${ROOT_DIR}/config.conf 含义
这句话的意思是在shell脚本中,source命令会读取指定文件中的变量和函数,并将其导入到当前shell环境中。${ROOT_DIR}是一个变量,它的值是config.conf所在的目录。
"2>&1"含义
https://www.cnblogs.com/zhenghongxin/p/7029173.html
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。
任何命令末尾加上 “&” 表示后台执行
判断文件夹是否存在
https://www.cnblogs.com/fnlingnzb-learner/p/10238101.html
#shell判断文件夹是否存在#如果文件夹不存在,创建文件夹
if [ ! -d "/myfolder" ]; thenmkdir /myfolder
fi#如果文件不存在,创建文件
if [ ! -f "/myfile" ]; thenmkdir /myfile
fi
getopts含义和用法
https://www.cnblogs.com/kevingrace/p/11753294.html
getopts是一个Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。 getopts命令可以接受一系列任意形式的命令行选项和参数,并自动将它们转换成适当的格式。注意它对顺序没有要求,也不要求全部匹配。
function help_usage()
{
cat <<EOF
======================================================================================================================
Usage: ./build_.sh <[ -a <cpu-arch> -t <task-type> [-v <version>]] | [ -c ] | [ -h ]>-a : xxxxxx.-c : xxxxxx.-h : Help information.-t : Execute the task.- compile- cmc- llt-v : VersionExample:./build.sh -c./build.sh -h./build.sh -a x86_64 -t compile./build.sh -a x86_64 -t cmc -v 0.0.1./build.sh -a x86_64 -t llt
======================================================================================================================
EOF
}
# 解析脚本入口参数并保存
function p
arse_arguments() {while getopts "a:t:v:ch" optdocase "$opt" ina )ARCH=${OPTARG};; # 保存-a后面的架构参数t )TASK=${OPTARG};; # 保存-t后面的任务类型参数v )VERSION=${OPTARG};; # 保存-v后面的版本号参数,只有-t类型为cmc时才有效c )clean && exit 0;; # -c清除并退出h )help_usage && exit 0;; # -h打印帮助信息并退出? )help_usage && exit 0;; # 如果不输入任何参数,默认也打印帮助信息并退出esacdone
}function main() {parse_arguments "$@"
}