-1

我有一个问题,我想手动确定文件夹名称。例如,如果用户按以下方式运行此脚本,

./scriptname -k 

他们可以获取结果,但文件夹名称是在脚本中确定的。如何手动确定文件夹名称,如下所示?

4

3 回答 3

1

您可以将帮助编写为函数:

usage(){
cat <<EOT
Usage: ${0##*/} dir1 dir2
EOT
}

if [ $# -ne 2 ]; then
    usage
    echo 'please enter two folder names'
    exit 1
fi

if [ ! -d "$1" ]; then
    usage
    echo "$1 is not a folder"
    exit 1
fi

if [ ! -d "$2" ]; then
    usage
    echo "$2 is not a folder"
    exit 1
fi

# continue script
于 2013-10-14T17:57:30.607 回答
0
#!/bin/bash

check_input_directories()
{
    if [[ ! -f "${folder1}" "${folder2}" ]]; then

        #your searching program

fi
}
Show_help()
{

cat <<_EOF
Usage  : $0 <options>        <path>
            Options:
               -f       <folder>  <folder>
_EOF
}

MAIN () {

case "$1" in
                        -f)
                                check_input_directories
                         ;;
                         *)
                                Show_help

esac

}

MAIN $*
于 2013-10-14T18:05:02.763 回答
0

我昨天删除了一个未经测试的答案,今天用这个经过测试的 bash 脚本返回:

#!/bin/bash

check_input_directories() {

  folder1="$1"
  folder2="$2"

  if [[ ! -d "${folder1}" && ! -d "${folder2}" ]]; then

    dir1=~/${folder1}
    dir2=~/${folder2}

    for i in $(find $dir1 -printf "%f\n")
    do
      find $dir2 -name $i -print
    done

  fi
}

Show_help() {

  cat <<_EOF
    Usage  : $0 <options>        <path>
    You can use this script as below,
    -d       folder1/ folder2/
  _EOF
}

MAIN () {
  case "$1" in
    -d)
      check_input_directories $2 $3
      ;;
    *)
      Show_help
  esac
}

MAIN $*
于 2013-10-15T10:47:29.237 回答