【问题标题】:Getting the input from one argument and only one argument从一个参数和一个参数中获取输入
【发布时间】:2018-11-20 03:07:16
【问题描述】:

这是我脚本中的一个函数:

这只是我正在编写的脚本中的一个函数。基本上我试图让用户只输入一个参数,如果它不止一个,它必须输出一个错误,如果它没有一个也是错误的参数。当我运行脚本时,我得到:

elif [ $# -ne 1] 处的语法错误;然后] 行

【问题讨论】:

  • 欢迎来到 Stack Overflow!请拿起tour,环顾四周,通读Help Center,尤其是How do I ask a good question? 如果您遇到特定问题,请彻底研究,在这里彻底搜索,如果您仍然卡住,请发布您的代码和问题的描述。另外,请记住包括Minimum, Complete, Verifiable Example。人们会很乐意提供帮助
  • 我们还建议将shellcheck.net 作为任何 bash 语法错误的第一站
  • 根据要求,您应该使用 -eq 而不是 -ne。正确的?如果他们输入一个参数,你想做一些事情。此外,您的 if 语句和 elif 语句的语法不一致。看起来您的 if 语句在 test 和 then 之间缺少一个分号。
  • 用文字替换图片。

标签: linux bash shell debian


【解决方案1】:

正如我评论的那样,您的代码在第一个 if 语句中缺少一个半,-ne 应该是一个 -eq。这是工作代码和一组测试用例:

$ cat student_check.sh
Student_Check()  {
  if [ $# -eq 0 ] ;  then 
    echo "No file specified"
  elif [ $# -eq 1 ] ; then
    echo success
  else
    echo "Invalid input"
    exit
  fi
}

echo Test 0 
Student_Check
echo Test 1 
Student_Check 1 
echo Test 2 
Student_Check 1 2


$ ./student_check.sh
Test 0
No file specified
Test 1
success
Test 2
Invalid input

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2016-10-19
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多