Сегодня я хочу рассказать о том как можно сравнивать строковые переменные и покажу несколько простых примеров, несколько скриптов на их основе.
Вот мой первый сегодняшний скрипт (подробнее о том как он работает смотрите в видео).
:~/mytest.dir/v20.26$ cat v20.26.sh
# Checking strings.
str1="Hello World!"
str2="My name is Alex."
str3=""
clear
echo "srt1=$str1"
echo "srt2=$str2"
echo "srt3=$str3"
echo -e "\nCheck if str1($str1) = str2($str2):"
[ "$str1" = "$str2" ]
echo $?
echo -e "\nCheck if str1($str1) != str2($str2):"
[ "$str1" != "$str2" ]
echo $?
echo -e "\nCheck if string str3($str3) _isn't_ empty:"
# -n string is not empty
[ -n "$str3" ]
echo $?
echo -e "\nCheck if string str3($str3) _is_ empty:"
# -z - empty line, length=0
[ -z "$str3" ]
echo $?
В данном скрипте производится сравнение строковых переменных.
Сначала объявляются три строковые переменные, значение переменных заключены в кавычки. Первые две переменные имеют определённое содержимое, а третья переменная нет, она пустая.
Далее для наглядности производится вывод производимых сравнений с помощью утилиты echo.
echo "srt1=$str1"
Первое сравнение в квадратных скобках [ "$str1" = "$str2" ]
– сравниваются две строковые переменные – если они равны, то результат сравнения будет положителен и код завершения последней операции будет равен нулю (о кодах завершения я рассказывал в одном из предыдущих видео). Код последней операции выводится с помощью утилиты echo.
echo $?
Cледующее сравнение положительно, если переменные не равны.
[ "$str1" != "$str2" ]
Третье сравнение (-n) положительно, если строковая переменная не пустая.
[ -n "$str3" ]
Четвёртое сравнение (-z) положительно, если строковая переменная наоборот пустая.
[ -z "$str3" ]
Результат можно увидеть в видео.
Теперь давайте рассмотрим пару весёлых скриптов в которых используется сравнение строковых переменных:
Скрипт – детские загадки:
~/mytest.dir/v20.26$ cat v20.26.sh-dumb-mysteries
#here is some mysteries:
# answers
dumb1="lampochka"
dumb2="snezhok"
dumb3="nozhnici"
i=0
clear
echo -e "\nVisit grusha nelzya skushat?"
read answer1
if [ "$answer1" = "$dumb1" ]
then
echo "Pravilno!"
i=$(($i + 1))
else
echo "Otvet neverniy!"
echo "Pravilniy otvet: $dumb1"
fi
echo -e "\nTi pomni ego nemnozhko stanet tverdim kak kartoshka!?"
read answer2
if [ "$answer2" = "$dumb2" ]
then
echo "Pravilno!"
i=$(($i + 1))
else
echo "Otvet neverniy!"
echo "Pravilniy otvet: $dumb2"
fi
echo -e "\nDva kolca, dva konca, a po seredine gvozdik?"
read answer3
if [ "$answer3" = "$dumb3" ]
then
echo "Pravilno!"
i=$(($i + 1))
else
echo "Otvet neverniy!"
echo "Pravilniy otvet: $dumb3"
fi
echo -e "\nYou score is $i."
exit 0
Скрипт – сейф.
:~/mytest.dir/v20.26$ cat v20.26.sh-safe
#here login and password combination:
#
login="alex"
password="123"
clear
echo -e "\nEnter your login:"
read ulogin
echo -e "\nEnter your password:"
read upassword
if [ "$login" = "$ulogin" ]
then
if [ "$password" = "$upassword" ]
then
echo -e "\nlogin/password matched. Here is a secret data:\n\nBlah-blah-blah-blah.\nBlah-blah-blah-blah.\nBlah-blah-blah-blah.\n"
else
echo -e "\nlogin/password doesn't match."
exit 0
fi
else
echo -e "\nlogin/password doesn't match."
exit 0
fi
exit 0
Подробнее смотрите в моём видео.
На сегодня всё, спасибо за внимание, надеюсь вам понравилось. =)
Подписывайтесь на канал!
Удачи!