我在使用 getopts 时遇到问题,我正在尝试解析选项但出现错误:
错误:找不到名称为 -a 的文件
代码:
while getopts ":a :b :c :d :e :f :g" opt; do
case $opt in
a) FILETOPARSE=$OPTARG
echo $compactAlarms
;;
b) FILETOPARSE=${OPTARG}
echo $nodeAlarms
;;
c) FILETOPARSE=${OPTARG}
echo $severityAlarms
;;
d) FILETOPARSE=${OPTARG}
echo $csvGentrator
;;
e) FILETOPARSE=${OPTARG}
echo $tableData
;;
f) FILETOPARSE=${OPTARG}
echo $help
;;
g) FILETOPARSE=${OPTARG}
echo $exit_function
;;
*)
echo "Error wrong Syntax,Opening help" && help
;;
esac
done
一旦它解析了数据,它就会调用该函数并显示数据。
最佳答案
选项字符串中有空格。我认为这就是问题所在。
while getopts ":a:b:c:d:e:f:g:" opt; do
应该可以解决您的问题。像这样完成脚本
#!/bin/bash
while getopts ":a:b:c:d:e:f:g:" opt; do
case "${opt}" in
a) FILETOPARSE=$OPTARG
echo $compactAlarms
;;
b) FILETOPARSE=${OPTARG}
echo $nodeAlarms
;;
c) FILETOPARSE=${OPTARG}
echo $severityAlarms
;;
d) FILETOPARSE=${OPTARG}
echo $csvGentrator
;;
e) FILETOPARSE=${OPTARG}
echo $tableData
;;
f) FILETOPARSE=${OPTARG}
echo $help
;;
g) FILETOPARSE=${OPTARG}
echo $exit_function
;;
*)
echo "Error wrong Syntax,Opening help" && help
;;
esac
done
关于linux - 错误 : File not found with name : -a while using getopts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782578/