bashストレッチpi3B +;フォーク 'program &'のシェルスクリプト--bashがファイルを見つけることができませんそこにいる

bashストレッチpi3B +;フォーク 'program &'のシェルスクリプト--bashがファイルを見つけることができませんそこにいる

'および&なしでバリアントを試み、パス全体を綴り、$ PATHに追加しました。ハイパーピングを呼び出すスクリプトと同じディレクトリにあっても、スクリプトがハイパーピングを見つけることができないようです。ユーザーpiとして実行します。私の髪を抜いてください! !スクリプトの実際の行

if [ $(/usr/bin/pgrep -c hyperping) -eq 0 ]; then './hyperping &'; fi

PATHの「ハイパーピング」[$PATHで確認、削除&でも確認]

***pi@pi20:~/tests $ ls -lt hyperping
-rwxr-xr-x 1 pi pi 692 Jul 30 13:10 hyperping***

「hyperping」は独立してうまく機能します。

「set -xv」を使用したbash出力

***/++ /usr/bin/pgrep -c hyperping
+ '[' 0 -eq 0 ']'
+ '/home/pi/tests/hyperping &'
./at7PM: line 33: /home/pi/tests/hyperping &: *No such file or
directory*/**** 

ベストアンサー1

を実行しておらず、文字通り空白と呼ばれるコマンドをhyperping実行しようとしています。これは、コマンドが不必要に引用符で囲まれているために発生します。hyperping &&./hyperping &'./hyperping &'

私はあなたが次のことをする予定だと仮定します

if ! pgrep hyperping >/dev/null; then
    hyperping &
fi

静かにできるオプションがpgrepある場合は放棄できます。-q>/dev/null

if ! pgrep -q hyperping; then
    hyperping &
fi

このコマンドは、探しているものが正常に見つかった場合は終了状態0で終了し、そうでなければゼロ以外の終了状態で終了するpgrepかのように動作します。grep実際の解析を避けるために、上記のアプローチを使用することができます。出力手がかりを命令して、何かが見つかったかどうかについて手がかりを取得します。 「runというコマンドがif ! pgrep somecommand; then ...; fiなければ...」と読み取ることができます。somecommand

おすすめ記事