1
我有代碼,其中awk通過管道傳輸到clearcase命令,其中If else循環不起作用。#awk如果其他循環不能在ksh中工作
代碼如下:
#!/bin/ksh
export dst_region=$1
cleartool lsview -l | gawk -F":" \ '{ if ($0 ~ /Global path:/) { if($dst_region == "ABC" || $dst_region -eq "ABC") { system("echo dest_region is ABC");}
else { system("echo dest_region is not ABC"); } }; }'
但是,當我執行上面的腳本中,我得到不正確的輸出,
*$ ksh script.sh ABCD
dest_region is ABC
$ ksh script.sh ABC
dest_region is ABC*
任何人都可以請有關此問題的幫助?
你能從'cleartool lsview -l'提供一些樣本輸出和解釋你要什麼做? – 2014-09-10 09:25:58
您似乎在awk腳本中混淆了'awk'語法和shell語法。 'awk'變量在使用時不需要'$'(除了位置和間接評估條件)。 '-eq'是一個shell條件測試(對於'test' /'''不是'awk'條件。 '$ dst_region'是你的代碼片段中的一個shell變量,但正在awk腳本中使用(並且因爲你將awk腳本包裝在單引號中阻止shell變量擴展),因此不在那裏工作。 – 2014-09-10 09:46:35
是的,我對shell變量和awk變量之間的變量感到困惑。正如你所說的,單引號阻塞了shell變量擴展,我需要爲適當的變量賦值創建awk變量,謝謝VonC – 2014-09-11 06:39:53