我編寫了一個shell腳本,它在一個虛擬機上運行時收集用戶從不同vms輸入的各種其他服務的狀態。代碼如下如下無法在使用ssh時在另一個變量中執行變量引用
#!/bin/sh
if [ $# -eq 0 ]
then
echo -e "\n Please pass the service names in the command line argument\n"
exit 1
fi
cl=$#
HOSTS="IP address of hosts"
for HOSTNAME in ${HOSTS}
do
echo -e "Service status on $HOSTNAME"
ssh [email protected]$HOSTNAME bash -c '
for ((i=1;i<='$cl';i++))
do
echo $i
eval x='\$$i'
echo $x
service $i status
done '
done
在使用eval x='\$$i'
「x」的值應該是由用戶傳遞的參數,但是當我ssh它的價值是沒有得到解釋,而不是x的值是$。
根據i的值,x的值應該是$ 1,$ 2等......。
例如,如果我給./test.sh SSSD,則X值應爲SSSD