我需要打印最后一行文件,例如/ 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?
谢谢!
答案 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
以防止外卡扩展。