Ответ 1
Это не вложенный цикл, а только один цикл. И вложенная версия тоже работает:
# for i in a b; do for j in a b; do echo $j; done; done
a
b
a
b
Я хочу написать цикл вложенных циклов, который должен работать в командной строке bash. вложенные для цикла в команде Single line.
Например,
for i in a b; do echo $i; done
a
b
В приведенном выше примере цикл выполняется в команде с одной строкой справа. Как и я, я попробовал цикл вложенных циклов в командной строке. Это не работает. Как это сделать. Пожалуйста, уточните меня на этом.
Это не вложенный цикл, а только один цикл. И вложенная версия тоже работает:
# for i in a b; do for j in a b; do echo $j; done; done
a
b
a
b
Одна одна строка (необходимы полуколоны):
for i in 0 1 2 3 4 5 6 7 8 9; do for j in 0 1 2 3 4 5 6 7 8 9; do echo "$i$j"; done; done
Отформатирован для удобочитаемости (без полуколонок):
for i in 0 1 2 3 4 5 6 7 8 9
do
for j in 0 1 2 3 4 5 6 7 8 9
do
echo "$i$j"
done
done
Существуют разные представления о том, как код оболочки следует выкладывать на несколько строк; что о том, что я обычно использую, если я не поставлю следующую операцию в той же строке, что и do
(сохранение двух строк здесь).
#!/bin/bash
# loop*figures.bash
for i in 1 2 3 4 5 # First loop.
do
for j in $(seq 1 $i)
do
echo -n "*"
done
echo
done
echo
# outputs
# *
# **
# ***
# ****
# *****
for i in 5 4 3 2 1 # First loop.
do
for j in $(seq -$i -1)
do
echo -n "*"
done
echo
done
# outputs
# *****
# ****
# ***
# **
# *
for i in 1 2 3 4 5 # First loop.
do
for k in $(seq -5 -$i)
do
echo -n ' '
done
for j in $(seq 1 $i)
do
echo -n "* "
done
echo
done
echo
# outputs
# *
# * *
# * * *
# * * * *
# * * * * *
for i in 1 2 3 4 5 # First loop.
do
for j in $(seq -5 -$i)
do
echo -n "* "
done
echo
for k in $(seq 1 $i)
do
echo -n ' '
done
done
echo
# outputs
# * * * * *
# * * * *
# * * *
# * *
# *
exit 0