0

私は、bash の論理ステートメントの構文、if/else、パイプなどの実行方法を学ぼうとしています。私は bash スクリプトを作成しようとしていますが、この作業がどのように機能するかを理解できずに 3 時間後に悲惨な失敗をしました。

ここで、この小さなスクリプトが必要です。一般化されたコードを使用して説明するか、好きなように呼んでみます。どうぞ:

while variable THRESHOLD = 10

{
if netstat -anltp contains a line with port 25565
then set variable THRESHOLD to 0 and variable PROCNUM to the process number,
else add 1 to variable THRESHOLD
sleep 5 seconds
}
kill the process No. PROCNUM
restart the script

基本的に、ソケットが閉じると、数回試行した後、そのポートでリッスンしていたプロセスを強制終了します。

可能だと確信していますが、適切に行う方法がわかりません。主な理由は、私がパイプを理解しておらず、grep にあまり慣れていないためです。よろしくお願いします。

4

2 に答える 2

1

攻撃的になりたくはありませんが、「一般化された」プログラムを書くことができれば、必要なのは、bashの構文を学び、 のマニュアルページなどを読むことだけです...whileifgrepkill

そして、pipesあなたの庭と同じです。との 2 つがtapありpondます。池をたくさんの方法で満たすことができます (例: 雨)。また、蛇口を開いて水を得ることができます。しかし、蛇口からの水で池を満たしたい場合は、パイプが必要です。それで全部です。構文:

tap | pond
  • タップからの出力
  • パイプでつなぐ
  • 池の(入力)へ

例えば

netstat | grep
  • からの出力netstat
  • パイプでつなぐ
  • の入力にgrep

それはすべて魔法です... :)

構文について: 質問に としてタグを付けましbashた。

ウィルショーをグーグルで検索するbash while syntaxと、このビギナーズバッシュガイドが表示されます

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html

ifに、同じウェブサイトでについて読むことができます。

while3 時間後には、bash 構文を使用してプログラムを作成するための基本的な構文と構文を理解できないとは信じられませんif。特に、「一般化された」プログラムを作成できる場合は...

(上のページの最初の例を変更することで) 書くのは難しくありません:

THRESHOLD="0"
while [ $THRESHOLD -lt 10 ]
do
    #do the IF here
    THRESHOLD=$[$THRESHOLD+1]
done

等々...

于 2013-06-24T19:51:54.147 に答える