jr="127.0.1.1 ysrnsk"
^^ Предоставление кавычек здесь означает, что охватывает все данные, в противном случае ваш ввод только 127.0.1.1
sed -i.bak '2 s/^.*$/$jr/' /etc/hosts
-i
аргумент делает редактирование на месте. Который не обеспечивает вывод. Если вы хотите «проверить» свои выходные данные перед редактированием, просто запустите
sed .bak "2 s/^.*$/'$jr'/" /etc/hosts
''
в bash - это буквально то, что вы вводите. Чтобы разрешить расширение параметров, например преобразование ваших переменных в их действительные значения, используйте двойные кавычки ""
sed .bak "2 s/^.*$/'$jr'/" /etc/hosts
^ ^ These don't do anything, other than again, tell bash to interpret this literally
Итак:
sed .bak "2 s/^.*$/$jr/" /etc/hosts # This to see your output
sed -i .bak "2 s/^.*$/$jr/" /etc/hosts # This to commit it without output