Linux Shell脚本检查字符串是否包含两个in参数

Linux Shell脚本检查字符串是否包含两个in参数,linux,bash,shell,if-statement,Linux,Bash,Shell,If Statement,我正在大学学习Linux和shell脚本入门课程。只是遇到了一个问题 我需要做一个if语句来控制是否只有2个参数,然后写出这些参数,如果没有,则返回一个警告字符串 #!/bin/bash echo "Please input two variables: " read var if var = ' '; then echo var else echo "More or less than two arguments" fi 这就是我目前所拥有的。我想我可以让if语句在字符串中寻

我正在大学学习Linux和shell脚本入门课程。只是遇到了一个问题

我需要做一个if语句来控制是否只有2个参数,然后写出这些参数,如果没有,则返回一个警告字符串

#!/bin/bash

echo "Please input two variables: "

read var

if var =  ' '; then
  echo var
else
  echo "More or less than two arguments"
fi
这就是我目前所拥有的。我想我可以让if语句在字符串中寻找一个空格

这是我在StackExchange上的第一篇文章。所以大家好:=)

您可以使用
$#
检查脚本调用的变量量。然后使用
$1
$2
回显变量

if [ $# -eq 2 ]
then
    echo "$1 $2"
fi

要从标准输入中读取两行并检查它们是否为空,可以使用以下命令:

#!/bin/bash

echo "Please input two variables: "

read var1
read var2

if [ -n "$var1" -a -n "$var2" ]; then
  echo $var1
  echo $var2
else
  echo "More or less than two arguments"
fi
我修改了您的脚本,添加了一个新变量(
var2
),并将
var
重命名为
var1


然后,使用
test
-n
开关修改
if
以检查这两个变量是否为空(在shell上键入
help test
,以获取更多信息)。我没有使用命令
test
,而是使用了对程序员更友好的
[
,它的作用与
test
相同,但需要一个结尾
]

您可以做的是从输入中创建一个,然后检查其长度

#!/bin/bash

echo "Please input two variables: "
read var

myArray=($var)

if [ ${#myArray[@]} -eq 2 ];
then
        echo ${myArray[*]}
else
        echo "More or less than two arguments"
fi

bash数组中的值由空格分隔,因此当
var
展开时,每个单词都被创建为一个新的数组索引。

不必等到命令开始运行后才获取输入,只需接受命令行参数即可。您的脚本如下所示:

if (( $# != 2 )); then
    echo "Need exactly two arguments"
    exit 1
fi

# Use $1 and $2 as needed
然后用

myscript hello world

您需要检查命令行或标准输出上是否有两个参数?对不起,我指的是输入。检查我的答案,输入应该像“hello world”。if语句将检查它的两个单独的单词。不是更多,不是更少。虽然true
$#
将提供所提供的参数数量,但此问题的输入来自stdin,而不是命令行参数,因此这不符合要求。