我需要将字符串更改为整数,因为我用数字检查文件的大小(使用:stat -c%s $filename 提取),请遵循完整的脚本:
#!/bin/bash
# Variable that contain path destination file
path=/sobstitude
# Variable for size
size=1000
# Loop for file scan
for filename in /test/*;
do
# Take the size of file
filesize=$(stat -c%s $filename)
# Check if the file is empty
if [ $filesize > $size ]
then
# Replace file
mv $filename $path
fi
done
exit 0;
答案1
在bash
/sh
变量包含字符串时,没有严格的整数概念。字符串可能看起来像整数,这就足够了。
stat -c%s $filename
应该返回一个看起来像整数的字符串。
就你的情况而言,主要问题在于重定向运算符>
(你现在可能在工作目录中有一些文件,其名称是数字)。此代码片段:
[ $文件大小 > $大小 ]
应该
[ "$filesize" -gt "$size" ]
答案2
无需“转换”数据类型。您可以使用-gt
或-lt
来比较数字:
➜ size="$(stat -c%s test.mp4)"; [[ "$size" -gt 4000 ]] && echo "bigger" || echo "smaller"
bigger
➜ size="$(stat -c%s test.mp4)"; [[ "$size" -gt 400000 ]] && echo "bigger" || echo "smaller"
smaller
>
原则上没有错。你可以使用算术表达式进行比较。
我已经[[
代替[
了扩展功能。
请注意,所有变量扩展都应使用双引号。特别是 和$filename
,$path
如果其中任何一个包含空格,您的脚本就会失败。
答案3
伙计们,我改变这个后就解决了:
if ((filesize > size))
现在工作,感谢支持