Запишите регулярное выражение, которое ловит пользовательский $HOME в shellscripting

Я хотел бы записать a regex в shellscript который сравнил бы путь ввода данных пользователем к пользователю$HOME. Затем это повысило бы ошибку в случае, если путь ввода данных пользователем содержит пользователя $HOME. Домашняя папка обычно запускается с /ort/home но /ort часть не необходимость. Когда я выполняю его, всегда дает a valid path хотя я ясно ввожу недопустимый путь. Что я делаю неправильно?Спасибо. Пошлите следующую ссылку [1] при необходимости видеть как regex используются в shellscript

Моя попытка следующие

#!/bin/bash

function user_input () {

        read -p "Type the path for project1:" user_path

        string1="${HOME}"
        echo "$string1"

        if [ "$user_path" = "$string1 | /ort/home/+.* |  .*+/home/+.*"  ]; then 
             echo "Not a valid path, contains $HOME directory"        
        else
             echo "valid path"
        fi
}

function main() {

user_input
}

main

Терминальный вывод

Обратите внимание, что первая запись является допустимым путем, и другие два являются недопустимыми путями.

jenny@server32:~$ ./test.sh 
Type the path for project1:/scratch/random
/ort/home/j/jen
valid path

jenny@server32:~$ ./test.sh 
Type the path for project1:/ort/home/j/jen
/ort/home/j/jen
valid path

jenny@server32:~$ ./test.sh 
Type the path for project1:/ort/home
/ort/home/j/jen
valid path

[1] https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash

-1
задан 1 April 2019 в 15:21

1 ответ

case управляйте подстановочными знаками шарика использования, которые довольно легки работать с:

case "$user_path" in
    "$HOME"*) echo "Error: path cannot be in your HOME" ;;
    */home/*) echo "Error: cannot have 'home' in the path" ;;
    *) echo "Thank you, valid path" ;;
esac
2
ответ дан 25 October 2019 в 07:26

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

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