“未找到命令”(简单的bash脚本)

时间:2013-10-19 14:56:38

标签: bash

我需要编写一个基本程序,它会在用户指定的目录中找到具有奇怪(不均匀)大小的文件,然后重命名它们。我编写了一个代码,但无法弄清楚它有什么问题因为我刚刚开始编程bash脚本...我的目录中有3个文件,这里是我得到的错误:

./Untitled: line 18: AppIcon.icns: command not found

mv: cannot stat ‘AppIcon.icns’: No such file or directory
./Untitled: line 18: AssociatedVm.txt: command not found

mv: cannot stat ‘AssociatedVm.txt’: No such file or directory
./Untitled: line 18: Info.plist: command not found

mv: cannot stat ‘Info.plist’: No such file or directory

我的脚本代码:

#!/bin/bash

n=0

echo “Specify directory” 

read directory

if [ -d $directory ]; then

         echo “Directory found”

else 
    echo “Directory not found” 

exit 0

fi

for file in $( ls $directory );

do

fsize=$(stat "$directory/$file" -c %s)


if [ $((fsize%2))=1 ]; then 


mv "$directory/$file" "$directory/$file.odd"


n=$((n + 1))


fi
 done

echo ”Number of renamed files: $n ”  

1 个答案:

答案 0 :(得分:2)

我认为你的意思是

fsize=$(stat "$file" -c %s)

但你写了

fsize=stat "$file" -c %s

此外,如果从非$directory/$file的目录运行脚本,则需要单独使用绝对路径($file)而不是$directory

Bash使用-eq进行整数比较,因此您还应该更改

if [ $((fsize%2))=1 ]; then

if [ $((fsize%2)) -eq 1 ]; then

-c %s是什么?我在-c手册页中没有看到stat选项。你是说-f吗? (编辑:好的我正在查看Mac stat命令(BSD)。GNU version中的stat使用-c进行格式规范)