0

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

我运行如下;

./scriptname folder1

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

sh -x ./scriptname 文件夹1

    + MAIN 
    + check_directories
    + [ -d  ]
4

2 回答 2

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; 检查查找手册页以获取详细信息。

于 2013-10-20T00:27:38.467 回答
0

这就是你的全部剧本吗?变量$folder1从未在任何地方定义。默认情况下,程序将使用 as$1和中的前两个文本块$2,因此请改用这些变量。

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

你已经有一个for循环,所以继续吧。但是,您可能必须将获取文件列表的部分放在其中,$()以便将其分配给变量,然后对其进行循环。

快速搜索“在 bash 中循环文件”,您会找到一个很好的 for 循环模板。

于 2013-10-20T00:22:06.510 回答