Подскажите как сделать
У меня есть три файла: 1.dat, 2.dat, 3.dat------------
1.data="Путь1"
b="Путь2"
------------
------------
2.datИдти $a
------------
------------
3.datИдти $b
------------
Как мне их собрать в один файл 4.dat вида
----------
4.datИдти Путь1
Идти Путь2
----------Т.е. в файле 1.dat содержатся переменные a и b с параметрами Путь1 Путь2, в файлах 2.dat и 3.dat строка "Идти " и имя переменной $a и $b соответственно, а в резльтате получается файл 4.dat
Как просто слить файлы я нашёл
#!/bin/bash
a="Путь1"
aaa="11.txt"
bbb="111.txt"
ccc="222.txt"
ddd="1.txt"
cat >> $ccc < $aaa
cat >> $ccc < $ddd
cat >> $ccc < $bbbно замена переменной а при таком варианте не происходит просто в выходном файле остаётся $a
Что делать?
Это чье ж больное воображение такое родило?.. :). 1.dat
eval echo `cat 2.dat` >> 4.dat
eval echo `cat 3.dat` >> 4.dat
>Это чье ж больное воображение такое родило?.. :)
>
>. 1.dat
>eval echo `cat 2.dat` >> 4.dat
>eval echo `cat 3.dat` >> 4.datНу моё, только это не сильно отличается от твоей кострукции. но я не нашёл конструкцию eval echo.
А как сделать чтобы перевод строки не исчезал?
Как с помощью echo вывести могострочный текст типа :строка1
строка2
строка3именно в таком виде с переводами строки, а то echo не выводит по умолчанию перевод строки и выдаёт:
строка1 строка2 строка3
>Как с помощью echo вывести могострочный текст типа :Двойные кавычки вам в помощь!
>Как с помощью echo вывести могострочный текст типа :
>
>строка1
>строка2
>строка3
>
>именно в таком виде с переводами строки, а то echo не выводит
>по умолчанию перевод строки и выдаёт:
>
>строка1 строка2 строка3ну, это не проблема: echo "`cat 3.dat`"
проблема в том, что eval уже этого не поймет.
так что, придется менять на что-то вроде:
cat 2.dat 3.dat | while read str ; do eval echo $str; done
Вобщем сделал так:#!/bin/bash
cat > 4.dat < 2.dat
cat >> 4.dat < 3.dat
aaa="`cat 4.dat`"
echo "$aaa"
>4.dat echo "${aaa//'$a'/Путь1}"aaa="`cat 4.dat`"
>4.dat echo "${aaa//'$b'/Путь2}"т.к. у меня переменных с путями несколько штук, то так будет проще.