2016-06-30 14 views
2

ファイルを読み込み、シェルスクリプトを使って別のファイルにある変数に値を割り当てたいと思います。例えばファイルを読み込んで別のファイルに値を割り当てます

私は変数の値を取得したい

$cli -u $user -p $passwd -s $host -f $file3 > $file4

testconf として、私はMYCONF別のファイルに

cli="/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh" 

user="rhqadmin" 

passwd="janre" 

file1="/opt/Solartis_Monitoring/JON_CLI/samples/agentresourceid.js" 
file2="/opt/Solartis_Monitoring/JON_CLI/samples/agentresourceid" 
file3="/opt/Solartis_Monitoring/JON_CLI/samples/alertresourceid.js" 
file4="/opt/Solartis_Monitoring/JON_CLI/samples/alertresourceid" 
file5="/opt/Solartis_Monitoring/JON_CLI/samples/alertid" 

と私のスクリプトとしてファイルを持っている(cliuserなど)からmyconfファイル。ループ中に、行全体に割り当てられている値を読み取るときに使用します。cli="/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh"$cliに割り当てます。私の変数

例にフィールドセパレータ=後の値のみを割り当てる必要があります:

は$ CLI をエコー/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh
を印刷する必要がありますCLI = "は/ opt/Solartis_Monitoring/JON_CLI/binに/ rhq-cli.sh"

ように私はそれが事前に定義されたものですMYCONFファイルを変更カントありません。あなたが読むとは、現在のシェルのコンテキストでfilename引数からコマンドに を実行sourceコマンドを使用する必要があり、この

答えて

2

に助けてください。ループで(変数のみを読んで)それを行うにはどのように

$cat test.sh 
cli="/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh" user="rhqadmin" passwd="janre" 
file1="/opt/Solartis_Monitoring/JON_CLI/samples/agentresourceid.js" 
file2="/opt/Solartis_Monitoring/JON_CLI/samples/agentresourceid" 
file3="/opt/Solartis_Monitoring/JON_CLI/samples/alertresourceid.js" 
file4="/opt/Solartis_Monitoring/JON_CLI/samples/alertresourceid" 
file5="/opt/Solartis_Monitoring/JON_CLI/samples/alertid" 

$cat test2.sh 
source test.sh 
echo $cli 

$./test2.sh 
/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh 

、私はこの方法を使用することをお勧めしません。私はそれを自分で使うことはありません。だから私はいくつかの技術を示すためだけにこの答えを追加しています。
BashはIFS(internal field separator)変数で動作し、=に変更できます。これは、変数を設定ファイルのデータから分割するのに役立ちます。ここで

IFS=" =" 

while read -r name data ruser data1 pwd data2; do 
    declare $name=$data 
if [[ $ruser != "" ]]; then 
    declare $ruser=$data1 
    declare $pwd=$data2 
fi 
done < test.sh 

echo $file1 
echo $cli 
echo $file5 
echo $passwd 
echo $user 

あなただけので、それはすべてのコマンドを起動することを確認したい。.. Arseniy.Itが働いていたよりおよそdeclare

+0

感謝を見つけることができ、ファイルから私が実行していますシェル変数スクリプトrit ?? whileループを使用するのと同じように、これを行うための他のオプションはありますか? – karthikraj

+0

Arseniyしかし、変数ritに値を代入しません。 たとえば、passwd = "janre"をconfファイルから変数passwdを使用するスクリプトに割り当てる場合は、 – karthikraj

+0

@karthikrajは新しい答えをチェックします。 – Arseniy

関連する問題