老实说,我对自己有点失望,但我花了几个小时试图成功地搜索它。许多主题都涉及到这个主题,但我无法达成解决方案。
我有一个'sh'脚本(在busybox上或我使用完全bash)。
该脚本在外部调用并传递3个变量($ 1,$ 2,$ 3),其中:
$1 directory of file
$2 not used
$3 name of file including directory
我正在尝试获取文件大小(统计信息不可用)所以我正在尝试使用du:
伪:
filesize=$(du $3 | awk '{ print $1 }')
我无法让脚本正确处理带空格的文件名。 我试过引用并逃避引用无济于事。 在命令提示符下,我可以注入\来处理du的空白区域。
非常感谢帮助。
答案 0 :(得分:3)
双引号效果为sh
。
sh-3.2$ f="a b"
sh-3.2$ echo aaaa > "$f"
sh-3.2$ ls -l "a b"
-rw-r--r-- 1 xxxx xxxxx 5 May 23 xx:xx a b
sh-3.2$ du "$f"
8 a b
答案 1 :(得分:1)
尝试
filesize=`du "$3" | awk '{ print $1 }'`
答案 2 :(得分:0)
我非常感谢那些花时间就这个问题提供一些想法的人。经过长时间的努力,确定busybox的实施是罪魁祸首。
如果使用了更新版本的bb(或任何完整的发行版),上面提供的所有内容都是有效的。不幸的是,为了达到这个目的,需要进行大量的反复试验。