標題の件で悩んだのでメモ
Puppyにデフォルトで実装されているhiawathaというかなりマイナーなサーバーアプリ上で phpをイジっているが、設定を治しては トライアンドエラーで頻繁に再起動している。再起動の標準的な手順では端末上で コマンドを 3つほど入力する必要があるんだが、結構面倒&忘れる。
そこでシェルスクリプトにしてアイコンで実行しようとしたら躓いた。
#!/bin/bash
PID = $(pgrep hiawatha)
if [ -n "$PID" ]; then
killall hiawatha
fi
systemctl restart php7.4-fpm.service
/usr/sbin/hiawatha
とやったら、「PID: コマンドが見つかりません」というエラーになってしまった。
端末(Urvxt)から、
PID=$(pgrep hiawatha)
echo "$PID"
とやるとエラーにならずに PIDが表示される。
いつも頼りの Google・Bing-chat先生たちもあまり釈然とした答えをくれない。
最後の手段で度々お世話になっている日本語フォーラムに質問しようとして、質問文を見直しているうちに、端末では「=」の両側の半角スペースを入れていないことに気づいた。まさか!? とは思ったが念のため端末でも半角スペースを入れて実行すると同じエラーが!!! そこで早速
#!/bin/bash
PID=$(pgrep hiawatha)
if [ -n "$PID" ]; then # PID が返ってくれば hiawatha は実行されている
killall hiawatha # kill -15 $PID でもOK
fi
systemctl restart php7.4-fpm.service
/usr/sbin/hiawatha # hiawatha 再起動
としてみたらスンナリ通った。
変数への代入記号「=」の両側には半角スペースを入れて見やすくするというのが常識だと思っていたら、そこが落とし穴だったなんて!
原因が分かってから検索したら
こんなページが! 情けないほどの知識不足!