「5 17 42 2 87 33」など、1行に数字のみを含むテキストファイル(スクリプトで生成)があります。各数字が50(はい)であることを確認し、数字の1つが50より大きい場合は、別のシェルスクリプトを実行したいと思います。私はvumometerプログラムを使用していますが、騒音レベルが高いときに音認識プログラムを実行することが目的です。だから私はしきい値を決定したいと思います。
答え1
input
関数とハードコードされたファイル名を引数として受け入れます。
greaterthan() (
threshold=$1
set -- $(< input)
for arg
do
if [ "$arg" -gt "$threshold" ]
then
echo execute other shell script
break
fi
done
)
ソースコードを作成するか、スクリプトで作成し、必要に応じて名前を付けるか、greaterthan 50
必要な数字で指定します。
答え2
DCを使用できます。
dc -f lefile -e '
[ c # clear the stack
! xmessage "a number is greater than 50" & # pop up a message
] sr
[ 50 <r # if a number > 50 execute macro r
z 0 <t # if stack not empty execute macro t
] st
lt x
'
答え3
使用awk
:
awk '{ for(i = 1; i <= NF; i++) if($i > 50) { system("bash /other/shell/script.sh") } }' file.txt
Bashスクリプトを使用してください。
#!/bin/bash
file=/path/to/file.txt
for num in $(<"$file"); do
if ((num>50)); then
bash /other/shell/script.sh
fi
done
その後、各数字を繰り返してfile.txt
数字が50より大きいことを確認し、指定したスクリプトを実行します。ただし、これは問題になるか不要になる可能性があります。テキストファイルに50を超える数字が複数ある場合は、スクリプトを複数回実行する必要がありますか?
答え4
ファイルを複数行に分割し、50以上の数字に一致する行を検索できます。
fmt -w1 | egrep -q '(\d\d\d|[5-9]\d)(\..*)?' && sh other_script.sh
正規表現の最初の角括弧句は、少なくとも3桁または「5」で始まる2桁を探します。 2番目のセクションでは、オプションの小数点と接尾辞を受け入れます。
-q
シャットダウン状態のみが必要なため、通常の出力を抑制するにはこのオプションを使用します。