输入变量有空格吗?

输入变量有空格吗?

假设我有一个脚本,其中包含:

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

相关内容