【发布时间】:2014-08-28 06:35:39
【问题描述】:
我正在尝试使用 bash 代码将一些 python 代码组合在一起,并希望能够提供多个选项来接受您可以通过命令行输入的值。为此,我正在尝试使用 getopts,但在尝试设置默认值时遇到问题。
我在网上看到过这个问题,之前也有人问过类似的问题,我尝试在主 getopts 代码之后使用冒号选项等答案,并在之前放置一个默认值,这导致了以下代码:
!/bin/bash
usage() { echo "Usage: $0 [-f <string] [-r <string>] [-t <string>] [-o <string>] [-s <5|10> [-e <1|2|3>] [-b <string>] [-q <string>]]" 1>&2; exit 1; }
q = "30"
b = "15"
while getopts ":f:r:t:o:s:e:b:q:" p; do
case "${p}" in
f)
f=${OPTARG}
;;
r)
r=${OPTARG}
;;
t)
t=${OPTARG}
;;
o)
o=${OPTARG}
;;
s)
s=${OPTARG}
((s == 5 || s == 10)) || usage
;;
e)
e=${OPTARG}
((e == 1 || e == 2 || e == 3)) || usage
;;
b)
b=${OPTARG}
;;
q)
q=${OPTARG}
;;
*)
usage
;;
esac
done
: ${q = 30}
: ${b = 15}
shift $((OPTIND-1))
if [ -z "${f}" ] || [ -z "${r}" ] || [ -z "${t}" ] || [ -z "${o}" ] || [ -z "${s}" ] || [ -z "${e}" ] || [-z "${b}"] || [-z "${q}"]; then
usage
fi
b2 = ${b} + 2
echo "The following are your options."
echo "reverse read file = ${r}"
echo "forward read file = ${f}"
echo "type of file = ${t}"
echo "output identifier = ${o}"
echo "number of splits wanted (s) = ${s}"
echo "You have chosen to complete ${e} rounds of joining"
echo "Your have chosen that a consensus region of ${b} bases is needed for a match to be made."
if ["${e}" == 3]; then
echo " For quality trimming you have select threshold cut off at ${q}"
fi
如上所述,我以前从未使用过 getopts,如果有人能解释我如何更正我的代码以设置 b 和 q 选项的默认值,我将不胜感激。
【问题讨论】: