Code block

Google Code Prettify + AD Sense

2016年12月14日 星期三

Bash:取得shell script所在目錄

有時候寫了script要給別人用,但是不確定別人會把script放在什麼地方,或是排cron的時候,執行的方式會是什麼,造成log寫錯位置

透過以下方式,取得script所在路徑後,放到 WORK_PATH 這個變數
就比較容易讓log寫在同一個目錄
例如:cmd >> $WORK_PATH/ScriptLog.log

#/bin/bash
FULL_CMD="$0"
DIRNAME_BIN=`which dirname`

## 檢查指令dirname是否存在
if [ -z "${DIRNAME_BIN}" ] || [ ! -x "${DIRNAME_BIN}" ]; then
  echo "Can't use command: dirname"
  exit 1
fi

TMP_WORK_PATH=`${DIRNAME_BIN} ${FULL_CMD}`
echo "${TMP_WORK_PATH}" |grep ^/ > /dev/null
if [ $? -gt 0 ]; then if [ "${TMP_WORK_PATH}" == '.' ]; then
WORK_PATH=$PWD
else
WORK_PATH="$PWD/${TMP_WORK_PATH}"
fi else WORK_PATH=${TMP_WORK_PATH} fi unset TMP_WORK_PATH DIRNAME_BIN

沒有留言:

張貼留言