Сравнивая две строки в Bash

Я хотел бы создать скрипт, который удаляет каталог с помощью rmdir после подтверждения паролем, используя read для установки переменной.

Пока у меня есть это:

#!/bin/bash -x
echo "Password:"
read -t 30 S1
    S2='55555'
if [ $S1=$S2 ]; then
    rmdir /home/william/test
else
    echo "fail"
sleep 10
fi

Итак, у меня есть -x, чтобы попытаться отладить его, но каждый раз, когда сценарий либо выходит из строя (если я неверно ввел пароль) это не удалит необходимый каталог.

Если у кого-то есть изменяемый сценарий, который я мог бы использовать, или если бы вы могли указать на проблемы с текущим сценарием, это было бы замечательно.

13
задан 4 March 2018 в 22:56

3 ответа

Правильный способ сравнения этих двух строк (S1 и S2) с использованием if:

if [ "$S1" = "$S2" ]

В этом случае не скупитесь на пробелы.

См .: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

0
ответ дан 4 March 2018 в 22:56

Вы также можете использовать GNU test, например:

test s1 = s2 && echo Equal || echo Not equal

В вашем контексте это:

test "$S1" = "$S2" && rmdir -v /home/william/test
0
ответ дан 4 March 2018 в 22:56

В скриптах bash вам нужно сравнить две переменные с методом ниже.

if [ "var1" != "var2" ]; then
  Do something
fi;

Пробелы важны

0
ответ дан 4 March 2018 в 22:56

Другие вопросы по тегам:

Похожие вопросы: