Вывод переменных в комманду с кавычками

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

JTMarsh
Сообщения: 132
ОС: Debian

Вывод переменных в комманду с кавычками

Сообщение JTMarsh » 27.07.2018 14:10

Доброго времени суток.

Помогите, пожалуйста, со скриптом.

Готовимся к переезду почты на Zimbra и надо пакетно заимпортить 2,5 тыщи учеток.
На просторах интернета нашел скрипт, подпилял.

Shell

#!/bin/bash

#Thank God
#RUN THIS SCRIPT FROM ZIMBRA USER
IFS=$'\n'
echo "This script is written by Damanjeet."
for i in `cat Accounts2+.csv | grep @1.com`; do
CHECK=`echo $i | grep @1.com`
#echo $i
if [ "$CHECK" == "" ]; then
echo
else
#echo $CHECK
EMAIL_ID=` echo $CHECK|awk -F\, '{ print $1}'`
PASSWORD=`echo $CHECK|awk -F\, '{ print $6}'`
GIVENNAME=`echo $CHECK|awk -F\, '{ print $5}'`
SERNAME=`echo $CHECK|awk -F\, '{ print $2}'`
echo $EMAIL_ID
echo $PASSWORD
echo $GIVENNAME
echo $SERNAME
echo "E-mail $EMAIL_ID PASSWORD $PASSWORD gn" "'""$GIVENNAME""'"" sn" "'""$SERNAME""'"" displayname" "'""$SERNAME $GIVENNAME""'"""
#UNCOMMENT BELOW LINE
/opt/zimbra/bin/zmprov ca $EMAIL_ID PASSWORD $PASSWORD gn $GIVENNAME sn $SERNAME displayname $SERNAME $GIVENNAME
fi
done
csv файл тоже подгогтовлен.
проблема только со строкой
/opt/zimbra/bin/zmprov ca $EMAIL_ID PASSWORD $PASSWORD gn $GIVENNAME sn $SERNAME displayname $SERNAME $GIVENNAME
она должна выглядеть:

Shell

/opt/zimbra/bin/zmprov ca ivanov.i@1.com password 8909987 gn 'Иван Иванович' sn 'Иванов' displayname 'Иванов Иван Иванович'
И вот как запихнуть туда эти кавычки одинарные. Двойные тоже можно.
Спасибо сказали:

Аватара пользователя
Vascom
Сообщения: 1397
ОС: Fedora 29

Re: Вывод переменных в комманду с кавычками

Сообщение Vascom » 27.07.2018 14:26

Добавь экранированные кавычки

Код: Выделить всё

\'$GIVENNAME\'
Двойные тоже так можно экранировать.
Спасибо сказали:

JTMarsh
Сообщения: 132
ОС: Debian

Re: Вывод переменных в комманду с кавычками

Сообщение JTMarsh » 27.07.2018 14:53

Ругается
Спасибо сказали:

Аватара пользователя
Vascom
Сообщения: 1397
ОС: Fedora 29

Re: Вывод переменных в комманду с кавычками

Сообщение Vascom » 27.07.2018 14:57

Кто и на что?
Спасибо сказали:

JTMarsh
Сообщения: 132
ОС: Debian

Re: Вывод переменных в комманду с кавычками

Сообщение JTMarsh » 27.07.2018 15:02

zmprov
ERROR: ldap.INVALID_ATTR_NAME (invalid attr name - unable to create entry: ldap host=zimbra.local:389: 'Почты ': AttributeDescription contains inappropriate characters)

Символы в аргументе неприемлимые.

По Вашему совету \'$GIVENNAME\' отдает как написано - \'$GIVENNAME\', а не переменную
Спасибо сказали:

Аватара пользователя
Vascom
Сообщения: 1397
ОС: Fedora 29

Re: Вывод переменных в комманду с кавычками

Сообщение Vascom » 27.07.2018 15:03

Либо попробуй взять переменную в двойные кавычки. Если там пробелы, то она воспримется правильно.
То есть пиши

Код: Выделить всё

"$GIVENNAME"
Спасибо сказали:

JTMarsh
Сообщения: 132
ОС: Debian

Re: Вывод переменных в комманду с кавычками

Сообщение JTMarsh » 27.07.2018 15:14

Тьфу. Отработало.
Спасибо. Нашел ошибку.
в строке

/opt/zimbra/bin/zmprov ca ivanov.i@1.com password 8909987 gn 'Иван Иванович' sn 'Иванов' displayname 'Иванов Иван Иванович'

слово password лишнее оказалось.
Спасибо сказали: