1

Имеется файл ./pass-file созданный с помощью htpasswd, в котором записан пароль 123456 для единственного пользователя user.
Содержимое этого файла:

user:0aVDMt3JbwKEk

Надо в скрипте проверить этот пароль и результат проверки передать переменной.
Проверяем сначала без передачи в переменную. Файл test.sh:

#!/bin/bash

echo правильный пароль
pass1="123456"
htpasswd -vb pass-file user $pass1

echo неправильный пароль
pass2="1234567"
htpasswd -vb pass-file user $pass2

Проверяем:

 Консоль:
$ ./test.sh
правильный пароль
Password for user user correct.
неправильный пароль
password verification failed

Вроде все работает. Модернизируем скрипт test1.sh (не заморачиваясь пока излишним выводом на экран):

#!/bin/bash


echo правильный пароль
pass1="123456"
message1=$(htpasswd -vb pass-file user $pass1)

echo неправильный пароль
pass2="1234567"
message2=$(htpasswd -vb pass-file user $pass2)

echo message1=$message1"   "message2=$message2

Проверяем:

 Консоль:
$ ./test1.sh
правильный пароль
Password for user user correct.
неправильный пароль
password verification failed
message1=   message2=

И убеждаемся, что в переменную ничего не передается (ни строка ни число).
Голову сломал, пытаясь найти, в чем косяк.

Путь важнее цели.

2

Если тебе просто результат проверки нужен, то наверняка он в коде выхода сохраняется.

Попробуй так:

#!/bin/bash


echo правильный пароль
pass1="123456"
htpasswd -vb pass-file user $pass1
message1=$?

echo неправильный пароль
pass2="1234567"
htpasswd -vb pass-file user $pass2
message2=$?

echo message1=$message1"   "message2=$message2

3

Vascom,
Спасибо. Так сработало ab

Путь важнее цели.