我正在Uni上介绍Linux和shell脚本课程。刚遇到一个问题。
我需要创建一个if语句来控制是否只有2个参数然后将它们写出来,如果没有返回警告字符串。
/*all cards*/
.card {...}
/*personalized cards*/
.card1 {...}
.card2 {...}
.....ect
这是我到目前为止所拥有的。我以为我可以让if语句在字符串中查找空格。
这是我在StackExchange上发表的第一篇文章。那么对那些StackExchangers的伙伴们问好了:=)
答案 0 :(得分:0)
您可以使用$#
来检查调用脚本的变量数量。然后使用$1
和$2
来回显变量。
if [ $# -eq 2 ]
then
echo "$1 $2"
fi
答案 1 :(得分:0)
要从标准输入读取两行并检查它们是否为空,您可以使用以下内容:
#!/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
。
然后,if
被修改为检查两个变量都不为空,-n
切换test
(在shell上键入help test
以获取更多信息) 。我没有使用命令test
,而是使用了程序员更友好的[
,其作用与test
相同,但需要结尾]
。
答案 2 :(得分:0)
您可以做的是从输入中创建array,然后检查其长度。
#!/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
时,每个单词都会被创建为新的数组索引。
答案 3 :(得分:0)
不要等到命令开始运行以获取输入之后,只需接受命令行参数。你的脚本看起来像:
if (( $# != 2 )); then
echo "Need exactly two arguments"
exit 1
fi
# Use $1 and $2 as needed
然后用
调用你的脚本myscript hello world