Используя несколько переменных в для цикла

Я хочу использовать две переменные в a for цикл как это (Это, например, я не собираюсь выполняться seq как операции)

for i j `seq 1 2` 'www.google.com www.yahoo.com';do echo $i $j;done

Ожидаемый вывод

1 www.google.com

2 www.yahoo.com

4
задан 5 November 2016 в 00:47

3 ответа

Если бы я должен был просто быть числом, которое увеличило с каждой строкой, то Вы могли попробовать за цикл и инкремент я с каждым повторением.

, Например:

i=1; for j in 'www.google.com' 'www.yahoo.com'; do echo "$((i++)) $j"; done
9
ответ дан 23 November 2019 в 11:36

Позволяет создают переменную для указания на расположение файла

FILE="/home/user/myfile"

Содержание файла:

www.google.com 
www.yahoo.com

Получить вывод:

1 www.google.com
2 www.yahoo.com

Это может быть сделано одним из следующих методов ниже:


Используя переменную счетчика:

i=1; 
cat $FILE | while read line; do 
    echo "$((i++)) $line"; 
done

Используя cat -n (число все выходные строки)

cat -n $FILE | while read line; do 
    echo "$line"; 
done

Используя массив:

array=(www.google.com www.yahoo.com);
for i in "${!array[@]}"; do 
    echo "$((i+1)) ${array[$i]}"; 
done

Если Ваш файл уже с номерами строки, примером:

1 www.google.com
2 www.yahoo.com

Цикл и разделение каждая строка для выстраивания:

cat $FILE | while read line; do
    col=( $line ); 
    echo "${col[0]} ${col[1]}"; 
done

Для большего количества информации:

4
ответ дан 23 November 2019 в 11:36

Вот некоторые альтернативные пути, два коротких и простых:

 printf "%s\n" www.google.com www.yahoo.com | cat -n  

и

 for i in www.google.com www.yahoo.com; do echo $i; done | cat -n

который оба вывода:

 1  www.google.com
 2  www.yahoo.com

и немного более сложное:

s=(www.google.com www.yahoo.com)
for i in $(seq 1 ${#s[@]}); do
        echo $i ${s[i-1]}
done

это производит:

1 www.google.com
2 www.yahoo.com

В том втором предложении я использую названный массив s созданный со строкой s=(xx yy)

${#s[@]} синтаксис является числом элементов в массиве, здесь 2 и ${s[i-1]} элемент при смещении i-1 с начала массива, таким образом ${s[1-1]} ${s[0]} и затем www.google.com, и т.д.


3
ответ дан 23 November 2019 в 11:36

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

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