строку, которая передается в файл с помощью bash [duplicate]

На этот вопрос уже есть ответ здесь:

Я пытаюсь передать несколько строк в текстовый файл при манипулировании строкой, которая передается по конвейеру в соответствии с последовательностью

cmd="My string 00"

for i in $(seq -f "%02g" 00 05); \
  do \
  echo $(echo $cmd | sed -e 's|00|$(echo $i)|g') >> outfile.txt ;  \
done

, не работает. Результат должен выглядеть следующим образом:

My string 00  
My string 01  
My string 02  
My string 03  
My string 04  
My string 05  

, но результат будет следующим:

My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
0
задан 21 July 2018 в 21:45

2 ответа

for i in {00000..00005}; do echo "${i/???/My string }"; done >> outfile.txt

Вывод к outfile.txt:

My string 00
My string 01
My string 02
My string 03
My string 04
My string 05
2
ответ дан 28 October 2019 в 07:37

Можно сделать все это с printf и расширение фигурной скобки:

$ printf 'My string %02d\n' {0..5} > outfile.txt

$ cat outfile.txt 
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05

Если по некоторым причинам необходимо генерировать входную последовательность с большим количеством дополнения, чем Вы действительно хотите, printf переформатирует его для Вас:

$ printf 'My string %02d\n' $(seq -f "%05g" 00 05)
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05
2
ответ дан 28 October 2019 в 07:37

Другие вопросы по тегам:

Похожие вопросы: