私はPIDファイルの制御のためのコードを手に入れました。bashのヒントを説明してください
プログラマーのスタイル、私は..
を理解していない私にはわからない - >
[[ $mypid -ne $procpid ]] **&&**
上& &の
を使用し、適切に自分自身を再起動(しMacOSXでは動作しません)
$0 [email protected] &
コード補完テ...
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行目を行ったのか分かりません。これらのコマンドのどれかが有効なコマンド名を生成しない限り、エラーでなければなりません。ワード分割に頼るのではなく、引用符で囲む必要があります。おそらく、これはnoclobberを分離するための '$ '記号がないサブシェルであることを意味していました。また、 'function name(){'構文を使わないでください。 Bashの場合は 'name()'だけを使用してください。珍しいksh/bashポリグロットライブラリを使っているなら、 'function name {'を使ってください。 – ormaaj
引数を空白で正しく保護するには、 '$ 0 $ @&'を '' $ 0 "" $ @ "&' - http://www.gnu.org/software/bash/manual/bashref.html#Specialに変更してください-Parameters –