我得到一段用於PID文件控制的代碼。解釋bash的一些提示
程序員的風格,我不明白..
我不知道 - 在
[[ $mypid -ne $procpid ]] **&&**
>
使用& &,妥善重新啓動自己(做不適用於MacosX)
$0 [email protected] &
Code comple TE ...
function createpidfile() {
mypid=$1
pidfile=$2
#Close stderr, don't overwrite existing file, shove my pid in the lock file.
$(exec 2>&-; set -o noclobber; echo "$mypid" > "$pidfile")
[[ ! -f "$pidfile" ]] && exit #Lock file creation failed
procpid=$(<"$pidfile")
[[ $mypid -ne $procpid ]] && {
#I'm not the pid in the lock file
# Is the process pid in the lockfile still running?
isrunning "$pidfile" || {
# No. Kill the pidfile and relaunch ourselves properly.
rm "$pidfile"
$0 [email protected] &
}
exit
}
}
我迷路
該代碼看起來不錯。我不明白他們爲什麼做了第4行的功能。這應該是一個錯誤,除非這些命令中的一個命令產生了一個他們不應該使用的有效命令名,並且應該引用它,而不是依賴於分詞。它們可能意味着它是一個沒有'$'標記的子shell來隔離noclobber。另外,不要使用'function name(){'語法。如果是Bash,只需使用'name()'。如果你正在做一些不尋常的ksh/bash polyglot庫,使用'function name {'。 – ormaaj 2012-04-19 15:45:20
爲了正確保護帶有空格的參數,將'$ 0 $ @&'更改爲'「$ 0」「$ @」&' - http://www.gnu.org/software/bash/manual/bashref.html#Special - 參數 – 2012-04-19 17:28:24