许多bash脚本使用参数控制命令,他们将运行和信息将提供给人们运行它们。这篇文章研究了一个您可以验证参数的多种方式,当你准备一个脚本,并要确保它将做你想让它做什么,甚至当有人跑步是一个错误。
显示脚本名称等。
显示一个脚本的名字当它运行时,使用一个命令echo $ 0。当脚本运行一个脚本将毫无疑问的人知道他们只是调用,使用脚本名称在使用命令可以帮助提醒他们他们应该提供什么命令和参数。
脚本名称可以显示以及期望的参数如下:
回声用法:$ 0月
的0美元参数表示脚本的名称。
使用语句通常显示当用户不输入合适的参数来运行脚本。使用声明预计会提醒人们——尤其是当他们很少运行脚本。
检查提供的数量的参数
显示用户提供的参数,您可以使用一个命令echo $ #。那$ #代表用户提供的参数的数量。脚本可以验证它是脚本的要求。这里有一个例子:
如果[$ # ! = 2];然后echo $ 0用户名日期(如12/01/2023)
上面的代码问参数提供的数量不等于2。您还可以使用这样的命令;
如果[$ # = = 2]#如果数量的参数= 2 ($ # lt 3) #如果数量的参数小于3 ($ # gt 4] #如果数量的参数超过4
的= =(=),lt(小于)和gt(大于)比较常用于确认正确的数量的参数运行脚本的人提供的。
验证参数
如果一个脚本将使用一个文件,您可能希望检查指定的文件存在之前的脚本运行一个命令是为了过程或检查它。例如:
文件名= $ 1 #如果(第一个参数应该文件名!- e $ filename);然后回声fi“没有这样的文件:$文件名”
的!- e上面的命令测试”的一部分,如果没有文件名称”。你也可以有一个脚本验证文件权限。例如,检查是否运行脚本的人可以读,写或执行一个文件,您可以使用这样的命令:
如果[!- r $ 1];然后回声不能读1美元fi如果[!- x $ 1];然后回声不能运行fi 1美元
如果[!- w $ 1];然后
回声不能写1美元
fi
运行脚本的人可能会看到这样的:
美元countlines thatfile thatfile不能读
验证参数类型
有很多方法可以验证的类型参数提供给脚本。例如,您可以检查是否一个论点是一串数字或字母。你甚至可以检查参数包括一个月和一年。这里有一些例子如何做这些事情:
检查数字是否
下面的代码可以确保提供的参数是一个字符串的位数。的是美元变量设置模式(数字)。
#检查参数是否数字re = ' ^[0 - 9] + $ '如果![[2 = ~再保险美元]];然后回声“错误:不是一个数字“退出2 fi
检查是否一串字符
下面的代码确保参数是一个字符的字符串。你可以选择检查如果它只包含小写或大写字母。
检查如果一个参数只包含小写字母:
#检查参数是字符re = ' ^ [a - z] + $ '如果![[$ 1 = ~ $再保险]];然后回声“错误:没有字母”退出3 fi
检查如果一个参数只包含大写字母:
#检查参数是字符re = ' ^ [a - z] + $ '如果![[$ 1 = ~ $再保险]];然后回声“错误:没有字母”退出3 fi
检查参数只包含字母(大写或小写):
#检查参数是字符re = ' ^ [a-zA-Z] + $ '如果![[$ 1 = ~ $再保险]];然后回声“错误:没有字母”退出3 fi
注:字母的顺序的论点提供了这些测试并不重要。“稀土”(正则表达式)测试只是确保指定的参数只提供字符范围。
遍历脚本参数
下面的命令将遍历所有的参数运行一个脚本时提供。
#显示列表的参数arg的“$ @”呼应“$ arg”完成
的$ @字符串表示的参数列表。的为命令然后遍历,显示他们一次。
检查command-specific语法
如下所示的命令将验证一个特定的语法命令脚本将运行,在这种情况下,卡尔(日历)命令,是正确的。它以一种非常有趣的方式。它运行命令并发送输出/ dev / null(“桶”)。如果返回的错误代码显示命令以某种方式(即失败。,the return code is greater than zero), the script tells the user the command failed. Otherwise, it runs the command again, displaying the output expected.
#检查年/月是否有效
卡尔$ 1 $ 2 > / dev / null
如果[$ ?! = 0);然后#遇到的错误
回声无效4月和/或年退出其他卡尔fi 1美元2美元
总结
有很多方法来验证参数提供给脚本运行时。这是特别有用,当你准备脚本,别人——尤其是script-savvy人不如自己——最终将运行。