bash: конкатенация строк с новой строкой - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь добавить строки в строку в скрипте bash.

мой код:

page_list=""
for ... do
  $page_list+=$"duration $mdelay \n"
done
echo $page_list >> $list_file

Но выдает следующую ошибку

 +=duration 0.12 \n: command not found

Обновление : удаление начального $ до page_list решает проблему, но новая строка не добавляется в list_file.

Обновление 2 : Ни одно из предложенных решений не работает

Ответы [ 3 ]

1 голос
/ 10 апреля 2020

Вы можете использовать $'\n' bashism, или вы можете просто сделать:

page_list="duration $mdelay
"

или

nl='
'
page_list="duration ${mdelay}${nl}"
1 голос
/ 10 апреля 2020

Используя $ в начале строки, Bash пытается запустить его как команду, просто удалите его

page_list=""

page_list+="duration $mdelay \n"
0 голосов
/ 10 апреля 2020

Я sh Я мог бы прокомментировать, чтобы попросить больше разъяснений о том, что такое $list_file. Ключ должен быть echo в пределах l oop и выводить результат в текстовый файл. Результат каждого echo будет автоматически записываться на новую строку.

#!/bin/bash

file_list="one two three" 
mdelay="0.12"

for i in $file_list
do
    i+=" duration $mdelay"
    echo $i >> output.txt
done

Результат (в файле output.txt):

одна длительность 0,12
две длительности 0,12
три продолжительности 0,12

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...