#bash
#bash
Вопрос:
Я пытаюсь выполнить этот скрипт bash, в котором я пытаюсь присоединиться к домену.
После domainjoin-cli
соединения $Domain
запрашивается пароль, и если мой пароль неверен, я хочу, чтобы скрипт завершал работу с сообщением «Не удалось», если, с другой стороны, это правильный пароль, он мне нужен для продолжения работы с оставшейся частью скрипта.
#!/bin/bash
echo -n "Domain: "
read Domain
domainjoin-cli join $Domain
if [[ "$password" = 'SUCCESS' ]]
then
echo "SUCCESS"
ls -l
fi
echo
if [[ "$password" = 'Error' ]]
then
echo "Not SUCCESSFULL"
exit
fi
Если я выполняю скрипт, я получаю сообщение об ошибке:
3.sh: 5: 3.sh: [[: not found
3.sh: 10: 3.sh: [[: not found
Это вывод, если пароль неверный:
"Error: LW_ERROR_PASSWORD_MISMATCH [code 0x00009c56] The password is incorrect for the given account"
Это вывод, если пароль правильный:
"Warning: System restart required Your system has been configured to authenticate to Active Directory for the first time. It is recommended that you restart your system to ensure that all applications recognize the new settings.
SUCCESS"
Комментарии:
1. (После отступа) похоже, что вы пропускаете
fi
afterecho "SUCCESS"
.2. После внесения необходимых изменений я получаю сообщение об ошибке. 3.sh : 5: [: -eq: неожиданный оператор 3.sh : 10: [: -eq: неожиданный оператор
3. После редактирования у меня возникает эта «ошибка 3.sh : 5: 3.sh : [[: не найдено» «3.sh: 10: 3.sh: [[: не найдено»
4. Я не вижу, где вы задаете
$password
; устанавливается ли это когда-нибудь? Кроме того, вы запускаете скрипт с помощьюsh
команды? Если да, то не делайте этого; это переопределяет shebang и запускает его сsh
, а неbash
. Вместо этого просто используйте./scriptname
(или путь к нему, если его нет в текущем каталоге).5. Ну, $ password — это входные данные «domainjoin-cli join $Domain».
Ответ №1:
- Используйте больше кавычек ™. Заключение переменной в кавычки гарантирует, что при запуске скрипта она расширится до одного «слова» или аргумента.
-eq
и подобные предназначены для сравнения чисел, поэтому «УСПЕХ» будет рассматриваться как число ноль, а это не то, что вы хотите.- Не бойтесь Bashisms.
[[
предпочтительнее[
, потому что его сложнее нарушить.
Результат:
[[ "$password" = 'SUCCESS' ]]