/path/to/script.sh将输出:IP is 10.9.2.16。/path/to/script.sh 8.8.8.8将输出:IP is 8.8.8.8. 如果您希望$1是可选的,但希望它后面有其他参数,则可以显式省略第一个参数,并允许它回退到默认值,方法是使用一对引号(单引号或双引号)代替第一个参数来调用脚本。例如,使用以下脚本:
#!/bin/sh
ip=${1:-10.9.2.16}
echo "IP is $ip"
echo "Your second argument is $2"
2条答案
按热度按时间wnvonmuf1#
我假设您选择了正确的标记,并提交了一个关于Unix/Linux命令行解释器的问题,并且您编写的示例代码是一个伪代码示例,用于解释所需的行为。
在manpage for bash的"参数扩展"一节中,它清楚地说明了如何对任何变量(而不仅仅是位置参数)执行此操作:
${参数:-字}
这也适用于POSIX shell,以及我所知道的shell脚本的所有方言。因此,对于您的示例,您可以使用:
/path/to/script.sh
将输出:IP is 10.9.2.16
。/path/to/script.sh 8.8.8.8
将输出:IP is 8.8.8.8
.如果您希望
$1
是可选的,但希望它后面有其他参数,则可以显式省略第一个参数,并允许它回退到默认值,方法是使用一对引号(单引号或双引号)代替第一个参数来调用脚本。例如,使用以下脚本:像
/path/to/script.sh "" quux
那样调用它将输出:7xzttuei2#
正如Wilson所评论的,在shell脚本中,你可以使用${parameter:-default}语法来读取一个可选的参数,如果参数不存在,就使用默认值。
这会将变量optional_arg设置为传递给脚本的第一个参数的值($1),如果未提供第一个参数,则设置为默认值“default_value”。
您也可以使用if语句和[ -z“$variable”]来检查变量是否为空。