linux - 错误 : File not found with name : -a while using getopts

标签 linux unix getopts

我在使用 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/

相关文章:

batch-file - Windows 批处理文件的 getopts?

bash - 在 Bash 中,为什么在函数中使用 getopts 只能使用一次?

从 unix 移植到 linux 的 C-Motif 代码项目

linux - 在 bash one-liner 中为多个命令设置环境变量

linux - Qt Creator 作为 Linux 嵌入式调试系统

c++ - 如何将用户输入与字符串进行比较?

linux - 带通配符的 rm 显示任务集帮助输出

bash - 为什么在可执行文件或脚本名称之前需要 ./(点斜杠)才能在 bash 中运行它?

bash - 如何创建一个可以通过位置参数和命名参数接受信息的通用 Bash 函数

linux - 无法在 linux 14.04 上安装 nvm