USB-принтер не отображается в lsusb на Ubuntu 16.04

Символ & в $varj имеет специальное значение в части replace команды s/search/replace/. Это означает "вставить сюда подходящий текст".

Вы можете использовать \& для "экранирования" &, чтобы он не имел специального значения. Вы можете использовать sed для изменения $varj, чтобы заменить все символы & на \&:

varj=$(echo "$varj" | sed -e 's/\&/\\\&/g')

Например:

cas@ganesh:/tmp$ ksh
$ vari='111|abc & efg|123'
$ varj='222|abc & efg|123'

$ echo "$vari" | sed -e "s/$vari/$varj/g"
222|abc 111|abc & efg|123 efg|123

$ varj=$(echo "$varj" | sed -e 's/\&/\\\&/g')
$ echo "$varj"
222|abc \& efg|123

$ echo "$vari" | sed -e "s/$vari/$varj/g"
222|abc & efg|123
0
06.02.2018, 05:05
0 ответов

Теги

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