Linux Shell脚本检查字符串是否包含两个in参数
我正在大学学习Linux和shell脚本入门课程。只是遇到了一个问题 我需要做一个if语句来控制是否只有2个参数,然后写出这些参数,如果没有,则返回一个警告字符串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语句在字符串中寻
#!/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,而不是命令行参数,因此这不符合要求。