
我需要將字串更改為整數,因為我用數字檢查檔案的大小(使用 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
and $path
,如果其中任何一個包含空格,您的腳本將會失敗。
答案3
夥計們,我在更改後解決了這個問題:
if ((filesize > size))
正在工作,感謝支持