我在mbratch的帮助下写了一个脚本。
我按以下方式运行;
./scriptname folder1
但是,我既没有看到错误也没有结果,我不确定是什么问题。
sh -x ./scriptname folder1
+ MAIN
+ check_directories
+ [ -d ]
答案 0 :(得分:1)
这对我来说很好用:
注意:已更新以支持其他选项。
opt="$1"
folder1="$2"
folder2="$3"
case "$opt" in
-d)
if [ -d "${folder1}" ] && [ -d "${folder2}" ] ; then
for i in "${folder1}/*" ; do
echo "test <$i>"
if [ -f "${folder2}/${i##*/}" ] ; then
echo "<${i##*/}>"
else
echo "! <${i##*/}>"
fi
done
fi
;;
# Example option
-h)
# Print help and exit.
;;
# Default case
*)
echo "Unknown option '$opt'" >&2
exit 1
;;
esac
尝试将~/
替换为$HOME/
,并确保在使用之前设置folder1
和folder2
。另请注意,如果目录或文件名包含空格,则会中断。在这种情况下,请使用find
;查看find man page了解详情。
答案 1 :(得分:0)
这是你的整个脚本吗?变量$folder1
永远不会在任何地方定义。默认情况下,程序会将前两个文本块放在$1
和$2
中,因此请改用这些变量。
在那里放置一些echo
语句,以查看哪些变量具有哪些值。
你已经有for
循环,所以请继续。但是,您可能必须将部件放在$()
内部的文件列表中,以将其分配给变量,然后 循环它。
快速搜索“在bash中循环浏览文件”,你会发现for循环的一个很好的模板。