假设我有一个脚本,其中包含:
command $1
还说command
有一个可选参数,所以它也可以是command $1 $2
。
如果$1
此处包含空格会发生什么(让我们假设$1=A B
)?命令是否会被解释为command A B
,或者单个变量在command A\ B
哪里?A B
答案1
通常,如果$1
包含空格且未用双引号引起来,则它将被解释为多个输入标记。如果您希望将其解释为单个标记,则将其用双引号括起来,即command "$1" $2
.这是因为默认情况下使用空格来分隔标记。可以通过设置环境变量的值来修改此行为IFS
。有关更多信息,您可以查阅高级 Bash 脚本指南中的以下页面:
答案2
取决于用户如何输入它 - 以及您如何在脚本中引用它
./command "a b"
或者
./command a\ b
应该提供$1="a b"
- 如果您在其他地方调用它,您应该将参数变量用适当的引号括起来 - 即,"$1"
如果用户简单地输入
./命令ab
那么 $1 将包含“a”,$2 将包含“b”,$#(参数数量)将为 2。
尝试将此脚本作为您的command
命令 -
#!/bin/bash
echo Number of arguments given - $#
echo First argument - $1
echo second argument - $2