2016-12-24 53 views
-1

我想使用變量而不是#0 #i,以便awk命令運行不同的變量,但它不能在下面的代碼中工作。任何一個幫助?在bash中循環不工作我的腳本

#!/bin/bash 

for ((i=0;i<2;i++)) 
do 
    awk '/VM #0 has been allocated to the host/ {print $0}' p_iqr.txt 
done 
+0

什麼不起作用?你在哪裏使用變量? – Barmar

+0

如果我使用#$ i而不是#0 for循環不運行 – amar

+0

變量不會在單引號內部擴展,那麼爲什麼您會期望這種方式有效? – Barmar

回答

1

使用-v選項awk設置一個變量。然後通過連接變量構造正則表達式

for ((i=0;i<2;i++)) 
do 
    awk -v i=$i '$0 ~ "VM #" i " has been allocated to the host" {print}' p_iqr.txt 
done 
+0

非常感謝你的腳本正在工作:) – amar