削减操作 - 奇怪的行为

Noh*_*sib 1 unix linux shell

由于输入数据中的"*",切割操作会给出意想不到的结果,如何解决它...

以下将更好地解释:

$ 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.
Run Code Online (Sandbox Code Playgroud)

这是由于inPut中的'*',如何解决?

And*_*ite 5

引用你的line变量......

vname=`echo "$line" | cut -d' ' -f4-$NF`
Run Code Online (Sandbox Code Playgroud)

另外,当你使用$ vname时一定要引用它...

echo "$vname"
Run Code Online (Sandbox Code Playgroud)

  • +1引用的建议.但不,*行*的*赋值*不会扩展星号,因为它在引号中.`echo $ line`中的未加引号变量将变量扩展为单词并执行globbing. (3认同)