if-elif里面的脚本无法正常工作

时间:2016-06-11 16:47:39

标签: linux sh

创建名为 dirstat 的脚本。我应该做的是找到是否是 文件,目录或其他东西。例如,要显示此消息:

file1 is file.
Desktop is directory. 
Public is something else.
dirstat is file.

我不知道我做了什么是错的或是对的。我应该写些什么以及在哪里?

$vi dirstat
#!/bin/sh
for i in *; do 
    if [ -f file1]
        echo -n "file1 is file"
    elif [ -d desktop)
        echo -n "desktop is directory"
    elif [ -p public ] 
        echo -n "Public is something else"
    fi
done

1 个答案:

答案 0 :(得分:0)

未经测试,但与您所拥有的相似:

#!/bin/sh
file_type() {
    if [ -f "$1" ]; then
        echo "file"
    elif [ -d "$1" ]; then
        echo "directory"
    else
        echo "something else"
    fi
}

for i in *; do
    printf "%s is %s\n" "$i" "$(file_type "$i")"
done

这将显示当前目录中的所有非点文件。或者,使用for i(不带in *)来显示命令行参数中列出的所有文件。