[英]Shell Script check if a string contains two in-parameters
我正在Uni上學習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上的第一篇文章。 向所有其他StackExchangers致以問候:=)
您可以使用$#
檢查調用腳本的變量數量。 然后使用$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
。
然后,將if
修改為使用test
-n
開關檢查兩個變量是否都不為空(在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.