現在、私はscript.sh
次の内容のファイル:
#!/bin/bash
wget -q http://exemple.com/page1.php;
wget -q http://exemple.com/page2.php;
wget -q http://exemple.com/page3.php;
前のコマンドが終了したら、コマンドを1つずつ実行したい。私はそれを正しい方法で行っていますか?私はこれまでLinuxを使用したことがなく、それを検索しようとしましたが、解決策は見つかりませんでした。
はい、あなたはそれを正しい方法で行っています。シェルスクリプトは各コマンドを順次実行し、最初のコマンドが完了するのを待ってから次のコマンドが開始します。コマンドを;
で結合するか、別々の行に置くことができます。
command1; command2
または
command1
command2
コマンドが別々の行にある場合、;
は必要ありません。最初のコマンドが正常に終了した場合にのみ、2番目のコマンドの実行を選択することもできます。これを行うには、&&
を使用して参加します。
command1 && command2
または
command1 &&
command2
利用可能なさまざまな制御演算子の詳細については、「 ここ 」を参照してください。
このような反復的なケースでは、for loopを使用することをお勧めしました。
for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done
これはコマンドラインに適した1行のバージョンですが、スクリプトで使用することもできます。変数を空白なしで文字列に埋め込む場合は、変数名を中括弧で囲む必要があります。
ループは要求を順番に送信するだけでなく、タイプミスを気にすることなく、必要に応じて調整して再利用するのが簡単です。