1

我正在尝试扩展一个脚本,该脚本实现了 Linux 上文件的回收站之类的东西。我有我在底部扩展的代码。

在我的扩展中,当脚本出现命令行参数时,-cleanup我想遍历目录中的/home/7/bearm/.garbage文件,并让用户决定是否要删除该文件。

但是,我不知道如何检测命令行参数何时存在。命令行可以有其他参数,我只是想在-cleanup使用时循环遍历文件。

我也不知道如何循环访问不同目录 ( /home/7/bearm/.garbage) 中的文件。

我将如何四处做这些事情?

set directory = '/home/7/bearm/.garbage/'

if(! -d "$directory") then
    mkdir .garbage
    mv .garbage /home/7/bearm/
endif

set n = 1

while ($n <= $#argv)
    set file = $argv[$n]
    if(-d $file) then
        #do nothing
        echo "Cannot trash directory $file"
    else
        mv $file /home/7/bearm/.garbage
        echo "Trashed $file"
    endif
    @ n++
end
du -h /home/7/bearm/.garbage
4

1 回答 1

1

要测试参数是否包含-cleanup,您可以这样做(使用ashon测试Minix3):

if echo "$@" | grep -- "-cleanup" >/dev/null 2>&1; then
    echo "-cleanup is present..."
fi

此外,如果您想要使用长 GNU 样式选项的适当解决方案,请参阅http://www.sputnick-area.net/scripts/getopts_long_example.shhttp://www.sputnick-area.net/scripts/getopts_long。嘘


bash您的伪脚本的一个版本:

#!/bin/bash

directory='/home/7/bearm/.garbage/'

mkdir -p "$directory"

for arg; do
    if [[ -d $arg ]]; then 
        #do nothing
        echo "Cannot trash directory $arg" >&2
    else    
        mv "$arg" "$directory"
        echo "Trashed $arg"
    fi      
done    

du -sh "$directory"

随意使用-cleanupswitch 改进它。

于 2012-10-15T02:40:55.007 回答