2016-12-10 21 views
0

ipsを/ etc/hostsに追加するスクリプトを作ろうとしていますが、/ etc/hostsに行を追加した場合、その行は空です。 私は[ "]に値が交換する変数名に問題があると思う?Bashスクリプト:サブbashコマンドで変数を解釈する方法は?

machines=("dell" "pb") 
ips=("192.168.0.70" "192.168.0.60") 
n=-1 
for nom_machine in "${machines[@]}" 
do 
     n=$(($n + 1)) 
     ip_machine=${ips[$n]} 
     link=" $ip_machine $nom_machine" 
     $(sudo /bin/bash -c 'echo -e $link >> /etc/hosts') 

done 

これは、/ etc/hostsファイルに空行を追加します

答えて

0

変数がで展開されていない理由を任意のアイデアは、単一引用符、唯一の二重引用符は。また、sudoの周り$(...)は必要ありません。スクリプトのスタイルの問題として

sudo bash -c "echo -e $link >> /etc/hosts" 

、私は完全にsudoの呼び出しを削除するお勧めします。代わりに、スクリプトを実行している人はそれを実行する期待します彼らがしなければsudoで十分な権限があります。あなたのスクリプトは次のようになります:

echo -e "$link" >> /etc/hosts 
関連する問題