我正在编写一个shell程序,它接受三个参数:
该命令的格式为myProgram num文件。但是,如果命令只有0,1或2个以上的参数,我希望程序输出错误。也就是说,如果我输入“myProgram”,“myProgram num”或“myProgram num file anotherWord”,则会在屏幕上显示错误。有谁知道如何将其实现到我现有的代码中?
答案 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处理的手册页,这在评估命令行参数时会更加强大。
好吧