bashを使用して、構成ファイルに次の構文を指定した配列から文字列を取得できますか?
| | Version | PackageManager | Webserver | Database |
|--------|---------|----------------|-----------|----------|
| Centos | 7 | yum | httpd | mariadb |
| Ubuntu | 14.04 | apt-get | apache | mysql |
」精密":
bashスクリプト(bootstrap.sh)で、サーバーOSに応じてhttpdまたはapacheをインストールするために、"./install.sh -webserver"などのパッケージをインストールする行を作成できるようにしたいです。
必要:
- bootstrap.shは、現在のサーバーOSが何であるか、サーバーOSがサポートされているかどうかを確認するロジックを含む./install.sh -webserver"を呼び出します。
- インストールする項目を確認します(-webserver)
-表示されます。翻訳テーブルに関連するオペレーティングシステムの正しいパッケージマネージャとパッケージ名を選択し
、bootstrap.shにhttpdをインストールするために必要なコマンドを返します(yum install httpd)。
変だと思うのは分かりますが、助けてくれて本当にありがとう。
答え1
私が正しく理解したら、オペレーティングシステムを入力として使用し、表示された表を読み、正しいインストールコマンドを返すコマンドが必要です。テーブルが実際には人間には適していますが、マシンには役に立たない合計を含む表示形式である場合は、次のようにして|
Web-
サーバーにアクセスできます。
awk -vOS="Centos" '$2==OS{print $6,"install",$8}' table
データベースの場合:
awk -vOS="Centos" '$2==OS{print $6,"install",$10}' table
実際の出力は次のとおりです。
$ awk -vOS="Centos" '$2==OS{print $6,"install",$8}' table
yum install httpd
$ awk -vOS="Centos" '$2==OS{print $6,"install",$10}' table
yum install mariadb
$ awk -vOS="Ubuntu" '$2==OS{print $6,"install",$8}' table
apt-get install apache
$ awk -vOS="Ubuntu" '$2==OS{print $6,"install",$10}' table
apt-get install mysql
テーブルが次のように単純な形式の場合:
Version PackageManager Webserver Database
Centos 7 yum httpd mariadb
Ubuntu 14.04 apt-get apache mysql
上記は次のとおりです。
awk -vOS="OS_NAME" '$1==OS{print $3,"install",$4}'
awk -vOS="OS_NAME" '$1==OS{print $3,"install",$5}'
したがって、スクリプトがOSをとして保存$os
し、オプション(webserver
またはdatabase
)をに渡すと仮定すると、$option
次のことができます。
case $option in
"webserver")
commmand=$(awk -vOS="$os" '$2==OS{print $6,"install",$8}' table ) ;;
"database")
command=$(awk -vOS="$os" '$2==OS{print $6,"install",$10}' table) ;;
esac