使用shell脚本查找错误

时间:2013-10-20 00:13:27

标签: shell unix

我在mbratch的帮助下写了一个脚本。

我按以下方式运行;

./scriptname folder1

但是,我既没有看到错误也没有结果,我不确定是什么问题。

sh -x ./scriptname folder1

    + MAIN 
    + check_directories
    + [ -d  ]

2 个答案:

答案 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/,并确保在使用之前设置folder1folder2。另请注意,如果目录或文件名包含空格,则会中断。在这种情况下,请使用find;查看find man page了解详情。

答案 1 :(得分:0)

这是你的整个脚本吗?变量$folder1永远不会在任何地方定义。默认情况下,程序会将前两个文本块放在$1$2中,因此请改用这些变量。

在那里放置一些echo语句,以查看哪些变量具有哪些值。

你已经有for循环,所以请继续。但是,您可能必须将部件放在$()内部的文件列表中,以将其分配给变量,然后 循环它。

快速搜索“在bash中循环浏览文件”,你会发现for循环的一个很好的模板。

相关问题