So sánh hai chuỗi trong Bash


13

Tôi muốn tạo một tập lệnh xóa một thư mục rmdirsau khi xác nhận bằng mật khẩu bằng cách sử dụng readđể đặt biến.

Cho đến nay tôi có điều này:

#!/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

Vì vậy, tôi phải -xcố gắng gỡ lỗi nhưng mỗi khi tập lệnh không thể lặp lại (nếu tôi đặt mật khẩu sai) hoặc nó sẽ không xóa thư mục cần thiết.

Nếu ai đó có một tập lệnh có thể sửa đổi mà tôi có thể sử dụng hoặc nếu bạn có thể chỉ ra các vấn đề với tập lệnh hiện tại thì sẽ rất tuyệt.

Câu trả lời:



6

Trong bash scripting, bạn cần so sánh hai biến với phương thức bên dưới.

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

Không gian rất quan trọng


4

Bạn cũng có thể sử dụng GNU test, ví dụ:

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

Trong ngữ cảnh của bạn, nó là:

test "$S1" = "$S2" && rmdir -v /home/william/test
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.