Как назначить несколько строковых значений в переменную в сценариях оболочки? - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь зациклить текстовый файл, меняя номер, и строка дырки сохраняется в переменной оболочки, чтобы вывести ее позже

Я попытался повторить строку и целое число (число из цикла), используя ">>"

#!/bin/bash
a=0
while [ "$a" -lt 4 ]
do
    echo '<div name="block-'${a}'">' >> $sub_main
    ((a++))
done
echo "done"
echo $sub_main

Вывод из скрипта должен быть:

<div name="block-0">
<div name="block-1">
<div name="block-2">
<div name="block-3">

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Используйте подстановку команд для записи вывода в переменную:

#!/bin/bash
sub_main=$(
    for (( a = 0; a < 4; a++ )); do
        printf '<div name="block-%d">\n' "$a"
    done
)
# ... do other stuff ...
echo "$sub_main"

Или вы можете захотеть использовать функцию, чтобы отложить выполнение на потом:

#!/bin/bash
sub_main() {
    for (( a = 0; a < 4; a++ )); do
        printf '<div name="block-%d">\n' "$a"
    done
}
# ... do other stuff ...
sub_main
0 голосов
/ 11 января 2019

>> добавляет исходящий файл в файл. Если вы хотите добавить к переменной, вы можете использовать присваивание с переменной для добавления в начале правильного значения.

a=0;
sub_main="";
while [ "${a}" -lt 4 ]; do
  sub_main="${sub_main}\n<div name=\"block-${a}\">";
  ((a++));
done;
echo "done";
echo "${sub_main}";

Или, если добавление к файлу предназначалось, вы можете просто использовать cat вместо echo для вывода содержимого файла.

т.е. замена

echo $sub_main

с:

cat "${sub_main}";
...