Bourne Shell Programming:处理参数错误

时间:2012-10-09 01:07:37

标签: shell input

我正在编写一个shell程序,它接受三个参数:

  • 一个整数来确定程序的功能
  • 程序使用的文件

该命令的格式为myProgram num文件。但是,如果命令只有0,1或2个以上的参数,我希望程序输出错误。也就是说,如果我输入“myProgram”,“myProgram num”或“myProgram num file anotherWord”,则会在屏幕上显示错误。有谁知道如何将其实现到我现有的代码中?

4 个答案:

答案 0 :(得分:1)

在bash中,使用整数时,(( )) is more intuitive

#!/bin/bash

if (($# < 2)); then
    printf >&2 "There's less than 2 arguments\n"
    exit 1
fi

if (($# > 2)); then
    printf >&2 "There's more than 2 arguments\n"
    exit 1
fi

if ! (($1)); then
    printf >&2 "First argument must be a positive integer\n"
    exit 1
fi

if [[ ! -f "$2" ]]; then
    printf >&2 "Second argument must be an exited file\n"
    exit 1
fi

# -->the rest of the script here<--

此外,尊重最佳实践&amp;正确的编码,在打印错误时,必须像STDERR一样printf >&2

答案 1 :(得分:0)

使用$#内置的shell来确定传递到脚本中的参数数量。您的计划名称不计算在内。

答案 2 :(得分:0)

内置变量$#包含传递给脚本的参数数量。你用它来检查是否有足够的参数如下:

#!/bin/bash

if [ $# -ne 2 ]; then
    echo "Usage: myProgram num file" >&2
    exit 1
fi

# The rest of your script.

答案 3 :(得分:0)

如果你正在使用bash,那么你可以像这样接近它:

#!/bin/bash
if [ $# -lt 2 ] || [ $# -gt 3 ]
then
  echo "You did not provide the correct parameters"
  echo "Usage: blah blah blah"
fi

这是一个非常简单的检查。您还可以检查getopt处理的手册页,这在评估命令行参数时会更加强大。

好吧