我正在尝试在OS X上的bash脚本中获取文件的大小。如果我明确指定文件的名称,我会得到正确的答案。如果我尝试做这个循环的事情,我得到一个错误的答案。这个bash脚本是Automator中文件夹操作的一部分,我不需要显式设置名称,因为文件夹的内容会发生变化。
这给了我正确的答案:
function get_file_size {
filesize1=$(stat -f%z "/Users/jcoulson/Nexus Transfer/Test.mpeg")
echo $filesize1
}
for f in "/Users/jcoulson/Nexus Transfer/"
do
get_file_size
done
这给了我136的回答:
function get_file_size {
filesize1=$(stat -f%z "$f")
echo $filesize1
}
for f in "/Users/jcoulson/Nexus Transfer/"
do
get_file_size
done
编辑:问题必须是stat。如果我只是用echo "found something"
代替get_file_size,我会看到文本回显。
答案 0 :(得分:2)
变量没问题,但你忘记了*
通配符,所以你的stat'ing目录而不是文件
function get_file_size {
filesize1=$(stat -f%z "$f")
echo $filesize1
}
for f in "/Users/jcoulson/Nexus Transfer/*"
do
get_file_size
done
答案 1 :(得分:1)
我认为你想要的是
function get_file_size {
filesize1=$(stat -f%z "$1")
echo $filesize1
}
for f in "/Users/jcoulson/Nexus Transfer/"
do
get_file_size $f
done
$ 1引用第一个参数,并且在get_file_size之后放置$ f将使用$ f作为第一个参数调用它
答案 2 :(得分:0)
对于将来磕磕绊绊的人,这是我完成的剧本:
function get_file_size {
filesize1=$(stat -f%z "$f")
echo $filesize1
}
for f in /Users/jcoulson/NexusTransfer/*
do
get_file_size
done