次のスクリプトを使用してフォルダーを監視していますが、サイズが変更されてファイルが存在しない場合は、スクリプトが実行されます。
#!/usr/bin/sh
SCRIPT="dim_import/xdir"
while true;
do
size=$(du -s dim_import | cut -b 1-2)
if [ $size -gt 32 ]; then
if [ ! -f files ]; then
$SCRIPT
fi
fi
sleep 2
done
私はそのようにスクリプトを実行します
>watcher &
問題は、ウォッチャープログラム内で実行されるスクリプトが入力を必要とすることです。プロンプトをエコーアウトしますが、入力はそのスクリプトではなく、現在のシェルに送信されます。したがって、1234を入力すると、次のようになります。
sh: 1234: not found.
入力を正しい場所に送信するにはどうすればよいですか?
私は多くの異なる方法を試しましたが、私がこれを行っている独特の方法のためにどれもうまくいかないようです。私はまた、より良い方法/回避策を受け入れています。スクリプトには、引数として送信したい入力を処理する機能もあります。
編集:私は62918のような番号を送信しようとしています
編集:私もこのようなことをすることができますが、同じエラーが発生します:
SCRIPT="dim_import/xdir"
while true;
do
size=$(du -s dim_import | cut -b 1-2)
if [ $size -gt 32 ]; then
if [ ! -f files ]; then
echo "SR Number: "; read srNum
$SCRIPT $srNum
fi
fi
sleep 2
done
注:私はBashを使用していません。私はShを使用しています。
多くの調査の結果、制限がないと不可能であると判断しました。しかし、私は望ましい回避策ではないことを発見しました。
基本的に、名前付きパイプ(「.in」と呼ばれる)を作成して情報を送信します。タイプ「i [入力]」を実行するだけの関数を作成しました
SCRIPT=".dim_import/xdir"
while true;
do
size=$(du -s .dim_import | cut -b 1-2)
if [ $size -gt 32 ]; then
if [ ! -f ~/files ]; then
echo "SR Number (i [number]): ";
read srNum < ~/.in
$SCRIPT $srNum
sleep 10
~/scripts/listSR
fi
fi
if [ ~/ ]
sleep 5
done
プロファイル機能:
function i
{
set +u
echo $1 > ~/.in
set -u
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加