我正在尝试扩展一个脚本,该脚本实现类似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
答案 0 :(得分:1)
要测试参数是否包含-cleanup
,您可以执行此操作(使用ash
上的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.sh和http://www.sputnick-area.net/scripts/getopts_long.sh
伪脚本的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"
可以使用-cleanup
开关来改善它。