统计数据不适用于空格?

统计数据不适用于空格?

我正在使用脚本来复制一些文件,具体取决于它们创建的年份,它对于不带空格的文件工作正常,但对于带空格的文件,stats 命令存在问题,例如我有这个文件:file with spaces.pdf

stat -c %y ./path/to/file\ with\ spaces.pdf|cut -d '-' -f 1

返回年份,例如:2017

但是当在脚本中使用时:

year=$(stat -c %y $pathfile | cut -d '-' -f 1)

这似乎不起作用,如果我采取以下输出:

 echo "stat -c %y file | cut -d '-' -f 1"

并在终端中复制它确实有效,在所有情况下错误都是相同的,就像忽略文件名的这一部分with\ spaces.pdf::

stat: cannot stat './path/to/file\': No such file or directory

我尝试在路径中添加引号,但它似乎不起作用:

year=$(stat -c %y "$pathfile" | cut -d '-' -f 1)

我在某个地方看到我需要将统计数据放入函数中,我这样做了:

 makestats () {
 $(stat -c %y $1|cut -d '-' -f 1)
 }

但它似乎不起作用,我遇到了同样的错误,如果你能给我你的帮助那就太好了。

答案1

引用您的变量bash,不这样做会将变量中的单词拆分为单个标记,并且使用该变量的命令将在预期单个字符串时获取多个单词(请参阅分词在外壳中)

year=$(stat -c %y "$pathfile" | cut -d '-' -f1)

我想你的问题在于你正在使用的变量"以及\转义序列。您需要执行其中任一操作。

pathfile="/path/to/file with spaces"

相关内容