【发布时间】:2014-05-23 13:25:43
【问题描述】:
老实说,我对自己有点失望,但我花了几个小时试图成功地搜索到这个。该主题已在多个主题中讨论,但我无法找到解决方案。
我有一个“sh”脚本(在busybox上或者我会使用完整的bash)。
脚本被外部调用并传递了 3 个变量($1、$2、$3),其中:
$1 directory of file
$2 not used
$3 name of file including directory
我正在尝试获取文件大小(stat 不可用)所以我正在尝试使用 du:
伪:
filesize=$(du $3 | awk '{ print $1 }')
我只是无法让脚本正确处理带有空格的文件名。 我试过引用和逃避引用无济于事。 在命令提示符下,我可以注入 \ 来处理 du 的空白。
感谢您的帮助。
【问题讨论】:
-
如何调用脚本?
-
du "$3"应该可以工作。 -
脚本是 chmod a+x 并且被称为“sh script”和./script。
-
这里所有知识渊博的海报似乎都同意双引号应该有效。你声称它没有。唯一合理的结论是你没有很好地解释你到底在做什么是行不通的。您删除的重要细节:您正在运行的代码(演示问题的最小工作示例),您如何运行它(完整的命令行),以及您获得的结果/错误消息。如果你这样做,我保证你会找到解决问题的方法,而不是继续这个无休止的“这应该工作”/“它不”循环。
-
扩展@shx2 的评论:可能涉及另一个问题,例如脚本调用错误(例如,文件名在传递给脚本时没有正确引用,这意味着它的一部分在 $3 , 4 美元的一部分, 5 美元、6 美元等的一部分)
set -x对于弄清楚脚本中发生的事情非常有用。另外,尝试通过shellcheck.net 运行脚本,看看它是否发现任何明显的东西。