LINUX.ORG.RU

$ cat test.txt
aaa $PWD bbb ccc $USER ddd eee
PWD $LANG kuku $PS1 $SHELL meme

$ cat test.txt | perl -pe 'while (/(\$\S+)/) { $b=`echo $1`; chomp $b; s!(\$\S+)!$b!;}'
aaa /home/sergey bbb ccc sergey ddd eee
PWD en_US.UTF-8 kuku  /bin/bash meme

sdio ★★★★★
()
Ответ на: комментарий от sdio

$PS1 -- в неинтерактивном шеле не определен.

sdio ★★★★★
()

DELIMITER=`dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64` FILENAME=test.txt

(echo "cat << $DELIMITER"; cat "$FILENAME"; echo "$DELIMITER") | sh

rymis ★★
()

За eval спасибо, perl я не понимаю поэтому пробовать не стал.

А rymis я так понимаю решил проявить свое аторофированное чувство юмора?

Fredy
() автор топика
Ответ на: комментарий от Fredy

> А rymis я так понимаю решил проявить свое аторофированное чувство юмора?

почему? У него аналог eval echo.

cat << xxx раскрывает переменные, если xxx не в одинарных кавычках. Более того, его решение сохранит индентацию.

dilmah ★★★★★
()
Ответ на: комментарий от Fredy

echo испортит пробелы, а мое решение нет. К сожалению я забыл отключить форматирование когда постил. Более того, я не убрал бы даже случайную генерацию разделителя: лишняя строчка не мешает.

rymis ★★
()
Ответ на: комментарий от Fredy

Упс разобрался, что сам дурак. Прошу прощения...

За вариант спасибо.

Fredy
() автор топика

configure использует sed для этих целей

Nihilist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.