як писати кілька рядків у файл, використовуючи сценарій оболонки?


1

Мені потрібно прочитати дані з джерела і сформувати XML-файл за допомогою сценарію оболонки. Але в першу чергу я не знаю, як написати кілька рядків у файлі, використовуючи сценарій оболонки

Відповіді:


5

Використовуйте перенаправлення виводу

echo '<fruit>'    > foo.xml   # overwrites
echo ' <apple />' >> foo.xml  # appends
echo '</fruit>    >> foo.xml  # appends

Або скористайтеся "тут документом"

cat <<EndXML > foo.xml
<fruit>
 <apple />
</fruit>
EndXML

Ще краще використовувати мову сценаріїв / програмування, що має підтримку XML. Мені подобаються Perl і XML :: LibXML, але ви можете віддати перевагу щось інше.


Дякуємо, перенаправлення виводу прекрасно працює для мене. Але всі теги закінчуються в одному рядку & lt; fruit & gt; & lt; apple / & gt; & lt; / fruit & gt ;.
newbie dev

Коли я використовував друге рішення "тут документ", я не можу відкрити XML-документ. я роблю щось не так?
newbie dev

@Vel: Так, але я не можу сказати, що ви робите неправильно без додаткової інформації: Ви вводите команду в командному рядку? Чи використовували ви вирізати & amp; вставити? Ви отримали повідомлення про помилку? Якщо так, то яке саме повідомлення про помилку?
RedGrittyBrick

Ні, я не зробив вирізати і вставити & amp; не використовує командний рядок. Я зберігаю файл на віддаленому місці для обох операцій. Коли я спробував відкрити файл або спробувати скопіювати файл з віддаленого місця на мій робочий стіл, на ньому зазначається "Помилка". Сподіваюся, що це допомагає
newbie dev

1
@Vel: Я думаю, ви повинні запитати про таблиці стилів і вилучення об'єктів як окреме питання. Я пропоную вам надати багато деталей про вашу операційну систему, інструменти та цілі.
RedGrittyBrick

2

Далі створюється файл з ім'ям "file.txt" (або замінює вміст файлу, якщо він вже існує), і записує в нього "foo" (без лапок):

echo "foo" > file.txt

Ви, начебто, шукаєте наступне, додавання рядок "foo" (знову, без лапок) у файлі (і знову, створюючи файл, якщо він не існує)

echo "foo" >> file.txt

Таким чином, наступний код напише три рядки до "file.txt":

echo "foo" >> file.txt ; echo "bar" >> file.txt; echo "beer" >> file.txt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.