当前位置: 技术问答>linux和unix
有段代码看不懂,求教
来源: 互联网 发布时间:2016-12-17
本文导语: #!/bin/sh ①# suck configuration. ②BASE_DIR=${0%/*} ③. ${BASE_DIR}/../etc/common.conf ④. ${BASE_DIR}/conf/ghd_common.conf ⑤exec 2>&1 ⑥exec 1>${DIRGIDARC}/aaa.log 这是一个cron的前7行代码,有没有高手能告诉我①~⑥这6行代码的意思是什么...
#!/bin/sh
①# suck configuration.
②BASE_DIR=${0%/*}
③. ${BASE_DIR}/../etc/common.conf
④. ${BASE_DIR}/conf/ghd_common.conf
⑤exec 2>&1
⑥exec 1>${DIRGIDARC}/aaa.log
这是一个cron的前7行代码,有没有高手能告诉我①~⑥这6行代码的意思是什么?
如:
②${0%/*}的值是什么
①# suck configuration.
②BASE_DIR=${0%/*}
③. ${BASE_DIR}/../etc/common.conf
④. ${BASE_DIR}/conf/ghd_common.conf
⑤exec 2>&1
⑥exec 1>${DIRGIDARC}/aaa.log
这是一个cron的前7行代码,有没有高手能告诉我①~⑥这6行代码的意思是什么?
如:
②${0%/*}的值是什么
|
①# suck configuration.
纯粹是注释
②BASE_DIR=${0%/*}
先看这个语法 ${varible%string*} 从右向左截取第一个string后的字符串 $0是你执行的脚本
比如你是./test.sh 那么$0就是./test.sh 如果是/path/to/test.sh 那么$0就是/path/to/test.sh
所以BASE_DIR=${0%/*} 就是取$0的路径 然后赋值给BASE_DIR
③. ${BASE_DIR}/../etc/common.conf
在当前shell脚本环境里执行${BASE_DIR}/../etc/common.conf 不启动子进程 多半是为了设置环境变量等
④. ${BASE_DIR}/conf/ghd_common.conf
在当前shell脚本环境里执行${BASE_DIR}/conf/ghd_common.conf 不启动子进程 多半是为了设置环境变量等
⑤exec 2>&1
2代表标准错误 1代表标准输出 这句话就是把脚本的标准错误 重定向到标准输出 也就是错误信息和正常信息一起输出
⑥exec 1>${DIRGIDARC}/aaa.log
1代表标准输出 这句就是把标准输出定向到日志文件${DIRGIDARC}/aaa.log里 因为前面第5句把标准错误也定向到标准输出了 所以错误信息也会写到${DIRGIDARC}/aaa.log日志里
如果你还不懂exec的用法 google搜shell exec内建命令用法
纯粹是注释
②BASE_DIR=${0%/*}
先看这个语法 ${varible%string*} 从右向左截取第一个string后的字符串 $0是你执行的脚本
比如你是./test.sh 那么$0就是./test.sh 如果是/path/to/test.sh 那么$0就是/path/to/test.sh
所以BASE_DIR=${0%/*} 就是取$0的路径 然后赋值给BASE_DIR
③. ${BASE_DIR}/../etc/common.conf
在当前shell脚本环境里执行${BASE_DIR}/../etc/common.conf 不启动子进程 多半是为了设置环境变量等
④. ${BASE_DIR}/conf/ghd_common.conf
在当前shell脚本环境里执行${BASE_DIR}/conf/ghd_common.conf 不启动子进程 多半是为了设置环境变量等
⑤exec 2>&1
2代表标准错误 1代表标准输出 这句话就是把脚本的标准错误 重定向到标准输出 也就是错误信息和正常信息一起输出
⑥exec 1>${DIRGIDARC}/aaa.log
1代表标准输出 这句就是把标准输出定向到日志文件${DIRGIDARC}/aaa.log里 因为前面第5句把标准错误也定向到标准输出了 所以错误信息也会写到${DIRGIDARC}/aaa.log日志里
如果你还不懂exec的用法 google搜shell exec内建命令用法