2011-06-09 78 views
1

剪切操作時輸入數據給因「*」意想不到的結果,如何解決它..剪切操作 - 怪異的行爲

以下將更好地解釋:

$ line="000067  (base 16)   SOFT * RITE, INC." 
$ vendoroui=`echo $line | cut -d' ' -f1` 
$ echo $vendoroui 
000067 
$ vname=`echo $line | cut -d' ' -f4-$NF` 
$ echo $vname 
1 bb bn btest.txt btmp.txt cc cut if sedTbKkAE sorted start.txt t10.sh t11.sh t12.sh t13.sh t14.sh t1.sh t2.txt t3.sh t4.sh t5.sh t6.sh t7.sh t8.sh t9.sh tmp RITE, INC. 

這是由於到inPut中的'*',如何解決?

+1

哪裏'$ NF'從何而來?如果你想要場4結束,請使用'cut -f 4 -' – 2011-06-10 00:40:01

回答

5

引用您的line變量...

vname=`echo "$line" | cut -d' ' -f4-$NF` 

此外,當您使用$ VNAME一定要引用它太...

echo "$vname" 
+0

完成!謝謝工作正常... – Nohsib 2011-06-09 23:14:51

+3

+1的建議報價。但是不行,*轉換爲'行'不會擴大星號,因爲它在引號中。 'echo $ line'中的不加引號的變量將變量擴展爲單詞並執行通配符。 – 2011-06-10 00:38:43

+0

@glenn:你是完全正確的;擴展會發生在回聲上。所以當他迴應$ vname時,它正在做擴展。你可以在任何地方逃避*或引用(這是正確的做法);更新以反映這一建議。 – 2011-06-10 01:48:28