(1)Shell中的單引號和雙引號區別
服務器
A="www.jfedu.net" ssh
B='$A'ide
echo $Bspa
註釋: .net
把www.jfedu.net賦值給變量A, 把變量A的內容賦值給變量B,打印出變量B的結果,打印出的結果爲$Aorm
由於變量A是一個弱引用,引用的結果只是一個字符get
A="www.jfedu.net" it
B="$A"for循環
echo $Bclass
註釋:
把www.jfedu.net賦值給變量A, 把變量A的內容賦值給變量B,打印出變量B的結果,打印出的結果爲www.jfedu.net
由於變量A是一個強引用,變量B的引用結果是www.jfedu.net,而不是一個字符
(2)for循環語法格式
for var in (表達式)
do
語句
done
(3) 用for循環打印1到100
for i in `seq 1 100`
do
echo $i
done
註釋: 單引號和雙引號只適用於變量引用,涉及到計算,不能用單引號和雙引號
拓展
用for循環打印1到100另外二種寫法
for i in $(seq 1 100)
do
echo $i
done
for i in `echo {1..100}`
do
echo $i
done
註釋: echo後面不要忘記加空格,不加空格,會報錯
(4) 用for循環讀取文件內容,並打印到屏幕上
for i in `cat list.txt`
do
echo $i
done
(5) 用for循環批量到遠程主機執行命令
command="$*"
for i in `seq 1 100`
do
ssh -l root 192.168.1.$i "$command"
done
(6)用for循環批量到遠程主機傳輸文件
files="$*"
for i in `seq 1 100`
do
scp -r $files root@192.168.1.$i:/tmp
done
(7)用for循環輸出1到100的和
j=0
for i in `seq 1 100`
do
j=`expr $i+$j`
done
echo $j
(8) while循環格式
while (表達式)
do
語句
done
(9) 用while循環讀取文件列表內容,並把結果打印在屏幕上
while read line
do
echo $line
done<list.txt
(10) 用while循環,每隔一秒在屏幕上輸出hello word
while sleep 1
do
echo "hello word"
done
(11) 用while循環,打印1到100
i=0
while(i<=100)
do
echo $i
i=`expr $i+1`
done
(12) while循環打印1到100的和
j=0
i=1
while(i<=100)
do
j=`expr $i+$j`
((i++))
done
echo $j
拓展: ssh免祕鑰登陸到遠程服務器
(1) 在本機上建立ssh-keygen
(2) 拷貝公共祕鑰到「被登陸機」,輸入密碼
ssh -l root 192.168.1.5 id_rsa.pub
(3) ssh到「被登陸機」把公共祕鑰輸入到「authorized _keys」(若是有多個機器都須要使用rsa祕鑰認證登陸到此機的話,把產生的公共祕鑰輸入到authorized_keys)
cat id_rsa.pub >> authorized_keys