用于确定文件大小的Linux脚本

时间:2015-11-30 00:10:55

标签: bash shell

我正在尝试编写一个脚本来模仿linux bash中的脚本输出:

(bob@server:~> filesize

Enter a file name (or q! to stop): fee

fee uses 123 bytes.

Enter a file name (or q! to sp): fi

There is no file called fi.

Enter a file name (or q! to stop): foe

foe uses 9802 bytes.

Enter a file name (or q! to stop): q!

bob@server:~>)

我的脚本看起来像这样(脚本名称是filesize):

#!/bin/bash
while true; do
        read  -p "Enter a filename (Or q! to stop) : " X
        case $X in
                [q!]* ) exit;;
                * ) echo "$X uses "$(wc -c <$X)" bytes";./filesize;;
        esac
done

在我输入q!以外的任何内容并且$X显示使用$(wc -c <$X)之后,我必须输入q!两次以使命令退出。

如何制作它以便我只需键入q!一次以使命令退出,而不是多次输入我读取文件大小的内容?

1 个答案:

答案 0 :(得分:2)

filesize(){ stat -c %s -- "$@";} 

如果你坚持要求所有的喋喋不休:

filesize(){ stat -c %s -- "$@";} 
while :; do
    read  -p "Enter a filename (Or q! to stop) : " x
    case "$x" in
        'q!') exit;;
       *) printf '%s\n' "$x uses $(filesize "$x") bytes";;
    esac
done

然而,单独的函数比while循环更多的是Unix语言。

wc -c < "$x"也可以。区别在于stat会立即告诉您大小,而无需进行计数。