.shを実行して複数のコマンドを実行する


9

シェルスクリプトを使用して複数のコマンドを実行する方法に興味がありました。

たとえば、試してみるために、.desktopをすべての更新コードを実行する.shに接続できるようにしたいので、入力する必要はありません。複数ではなく、.shを介して単一のコマンドを実行する方法を知っています。

なに?

回答:


10

本当にシンプル-コマンドを分離する必要があります。たとえばこれ:

#!/bin/bash
sudo apt-get update
sudo apt-get upgrade

パッケージリストを更新してから、パッケージを更新します。別の可能性はこれです(おそらく、&&はupgradeupdate出口が正常に終了した場合にのみコマンドの実行を許可するためです)

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade

これにより、パッケージのリストを更新するためのコマンドが実行され、次にパッケージ自体が実行されます。これはテキストファイル(updatescriptホームディレクトリなど)に保存する必要があります。次に、次のコマンドを実行して実行可能にします。

 chmod +x ./updatescript

または、ファイルを右クリックして、そのプロパティで実行可能にします。

そしてこれをターミナルで実行します:

 ./updatescript

ノート):

コマンド-yで使用できるオプション()があるupgradeため、パッケージをアップグレードする前にプロンプ​​トは表示されません。apt-getパッケージをアップグレードする前に、何をしているのかを確認することをお勧めします。これは、愚かなことや、望まないことを行う可能性があるためです。このようなオプションの詳細については、を実行してくださいman apt-get

これはまた、更新内容を確認して実行できるため、ターミナルを使用してスクリプトを実行する方が理想的であることも意味します。GUIでアップデートを実行する方法が必要な場合は、ソフトウェアセンターを使用してください。


5

@Wilfによる優れた回答にいくつかのポイントを追加するだけで、

なんらかの理由で必要な場合は、並列でコマンドを実行できます。たとえば、autostartOpenBoxのスクリプトは次のようになります。

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

これは、を使用して背景画像を設定しnitrogen、パネルtint2を起動し、Quake3スタイルのドロップダウンコンソールtildaをすべて同時に起動します。これは、次のプログラムを起動する前にプログラムを終了する必要がない場合に役立ちます。しかし、そうではapt-get updateありませんapt-get upgrade

&各行の終わりにある記号に注意してください。これにより、シェルはそのプロセスをバックグラウンドに分岐し、実行を継続します。注それは異なるのですか&&、基本的である、and看板、command_1 && command_2実行されるcommand_1と、それは成功で終了した場合にのみ、実行しcommand_2、しばらくは、command_1 & command_2最初の後に第2の右を開始します。


また、次のようにコマンドをスタックしてシリアルに実行させることもできます。

#!/bin/bash

apt-get update
apt-get upgrade

これはapt-get upgradeapt-get update終了した後に実行されますが、結果には関係ありません。そのため、たとえば、ネットワークエラーで更新が終了した場合でも、アップグレードは実行されます。

次の;記号を使用して、これを1行で行うこともできますapt-get update ; apt-get upgrade。繰り返しになりますが、このソリューションはこれらの特定のコマンドには最適ではありませんが、他の状況で役立つ場合があります。


最後のポイント&&として、次のような行を改行することもできます。

command_1 &&
command_2

これはと同じになりcommand_1 && command_2ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.