LINUX.ORG.RU

Сообщения Heart

 

Удаление непечатаемых символов из переменной в bash

Форум — Admin

Задача: создать переменную из кириллицы рандомной длины. Далее эта переменная будет использована в качестве поля CN в subject.

Не придумал ничего лучше:

subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

Т.е. создаю массив из кириллицы, из которого выбираю некоторое количество символов, удаляя пробелы между ними.

На выходе получаю:

root@root:~# subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

CN=фвЯПШ

root@root:~#

root@root:~# subj_gen=$( cat /dev/urandom | grep -aoe [абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] | tr -d '\n' | head -c $( shuf -i 1-10 -n1 ) ); subj_value="CN=$subj_gen"; echo $subj_value

CN=Обэ▒

root@root:~#
root@root:~# cat $subj_value

cat: 'CN=Обэ'$'\320': No such file or directory

root@root:~#

Как видим, в первом случае мы получаем корректную переменную, во втором же в конец этой переменной добавляется непечатаемый символ. Если верить cat – это символ $.

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

Перемещено hobbit из general

 ,

Heart
()

RSS подписка на новые темы