web-dev-qa-db-ja.com

Bash-変数を文字列に挿入します(コマンドが見つかりません)

多くのサーバーからソフトウェアのバージョンを取得するためのスクリプトを作成しようとしています。しかし、試してみると、このエラーメッセージが表示されます。

bash:Postfix verzio:MariaDB verzio:OS verzio:Java verzio ::コマンドが見つかりません

bash:postfixverzio:コマンドが見つかりません

ヌルメッセージ本文。大丈夫だといいのですが

#!/usr/bin/env bash

parancsok=$(<verziok_lekerdezese.sh)

while read line
do
    array=($line)
    echo "IP Addresses : ${array[0]} "
    ssh -t -t root@${array[0]} ${parancsok}
done < ipcimek_test.txt

Verziok_lekerdezese.sh:

postfixvr = $(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr = $(mysql -v)
osvr = $(cat /etc/redhat-release)
javavr = $(Java -version)
hostname = $(cat /etc/hostname)

body = "Postfix verzio: $postfixvr MariaDB verzio: $mariadbvr OS verzio: $osvr Java verzio: $javavr"

echo $body | mail -s "Verziok - Szervernev: $hostname" [email protected]

exit

英語が苦手なことをお詫びします。

1
G3ph4z

Bashスクリプトの等しいchar=(代入ステートメント内)の両側のスペースを削除する必要があります。だから、行:

postfixvr = $(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr = $(mysql -v)
osvr = $(cat /etc/redhat-release)
javavr = $(Java -version)
hostname = $(cat /etc/hostname)

次のように書く必要があります:

postfixvr=$(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr=$(mysql -v)
osvr=$(cat /etc/redhat-release)
javavr=$(Java -version)
hostname=$(cat /etc/hostname)

これは、body =を含むすべての割り当てにも適用されます。

1
Khaled