Sac*_*kar 172
要检查是否没有提供给命令的参数,请检查$#变量的值,然后,
if [ $# -eq 0 ]; then
echo "No arguments provided"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
如果你想使用$*(不推荐)那么,
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
一些解释:
第二种方法并不可取,因为在位置参数扩展中*,从一个开始扩展到位置参数。当扩展发生在双引号内时,它扩展为单个单词,每个参数的值由 IFS 特殊变量的第一个字符分隔。这意味着构造了一个字符串。所以有额外的开销。
另一方面#扩展到位置参数的数量。
例子:
$ command param1 param2
这里,
的值$#是2和的值$*是字符串“参数1参数2”(没有引号),如果IFS未设置。因为如果IFS未设置,参数之间用空格隔开
有关更多详细信息man bash并阅读名为特殊参数的主题
Pat*_*Pat 22
如果您只对缺少特定参数的情况感兴趣,那么参数替换非常棒:
#!/bin/bash
# usage-message.sh
: ${1?"Usage: $0 ARGUMENT"}
# Script exits here if command-line parameter absent,
#+ with following error message.
# usage-message.sh: 1: Usage: usage-message.sh ARGUMENT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166231 次 |
| 最近记录: |