🐹 Bash: Вывести аргументы в обратном порядке.

Содержание:

1. Задача.
2. Решение задачи.
3. Оригиналы источников информации.


1. Задача.

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

2. Решение задачи.

2.1. Первый скрипт.

#!/bin/bash

for (( i=$#; i>0; i-- )); do
   echo "${!i}"
done

где $# — количество аргументов скрипта.

Команда:

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9 > file.txt

Ответ:

2.2. Второй скрипт.

#!/bin/bash

echo $@ | tr ' ' '\n' | tac | tr '\n' ' '

где $@ — считать введенную строку из командной строки.

Команда:

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9 > file.log

Ответ:

2.3. Третий скрипт.

Реверсирование простой строки пробелами.

#!/bin/bash

o=
for i; do
    o="$i $o"
done
echo "$o"

Команда:

# ./arg-sort.sh Hello world!

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9

Ответ:

2.4. Четвертый скрипт.

Если вам нужно вывести одну строку в качестве аргумента.

Просто замените echo на printf "%s\n":

#!/bin/bash

o=
for i; do
    o="$i $o"
done
printf "%s\n" $o

Команда:

# ./arg-sort.sh Hello world!

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9

Ответ:

Получится тоже самое, но уже с другим классом строки.

2.5. Пятый скрипт.

Реверсировать массив строк.

#!/bin/bash

declare -a o=()

for i; do
    o=("$i" "${o[@]}")
done

printf "%s\n" "${o[@]}"

Команда:

# ./arg-sort.sh "Hello world" print will this

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9

Ответ:

2.6. Шестой скрипт.

#!/bin/bash

for i in "$@"; do
    echo "$i"
done | tac

Команда:

# ./arg-sort.sh "Hello world" print will this

# ./arg-sort.sh 1 2 3 4 5 6 7 8 9

Ответ:

В ответ будет тоже самое, но с помощью tac.

3. Оригиналы источников информации.

  1. progi.pro «Вывести аргументы bash в обратном порядке».