为什么文件输出到变量会在路径下附加不相关的文件名

时间:2016-11-29 13:42:53

标签: shell

我需要打印最后一行文件,例如/ path / file到参数

内容:

>tail -n 1 /path/file
74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 **

命令行的输出是正确的。

但是当我使用时:

arg=`tail -n 1 /path/file`
or arg=$(tail -n 1 /path/file)
echo $arg

输出变为

74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 file1 file2 file3 ....
file1 file2 file3 are under /path

似乎**被翻译成ls之类的东西? 我不太明白其含义......

我怎么能在这里找到合适的$ arg?

谢谢!

1 个答案:

答案 0 :(得分:1)

** 正在扩展,导致列出目录中的所有文件。这称为Globbing

如果不是双引号或单引号:

echo 74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 **
74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 file1 file2.....
more files..... and more files......

双引号时:

echo "74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 **"
74.870 534.1 2187.7 0.000 60.0 32047 5.782 716.573 **
在执行set -f之前

echo以防止外卡扩展。