Скрипт, который будет читать 5 чисел, а затем сортировать от большего к меньшему

Сначала я запускал httpd с помощью «yum install httpd», а затем запускал его с помощью «service httpd start»

, но однажды я изменил имя хоста, чтобы оно отличалось от значения по умолчанию, и установил его на AmericaN и настроил DNS на 8.8.8.8. 8.8.4.4 затем я потерял доступ к apache и не смог получить доступ к своему общедоступному IP-адресу с помощью браузера.

поэтому, проведя небольшое исследование, я нашел решение своей проблемы, разрешив firewalld распознавать мой трафик на порту 80/443 http/https с помощью следующей команды:

sudo firewall-cmd --add-service=http - -постоянный && sudo firewall-cmd --add-service=https --постоянный

1
21.08.2018, 00:58
3 ответа

вы можете просто использовать сортировку с обратным переключателем:

echo -e "$n1\n$n2\n$n3\n$n4\n$n5" | sort -rn 
5
27.01.2020, 23:11

Лучший способ запрограммировать эту задачу.

#!/bin/bash

# put number names into array
number_names_arr=(first second third fourth fifth)

# use loop, because code duplication is a bad practice. 
# It repeats five times all commands it have inside.
for ((i = 0; i < 5; i++)); do
    # Prompt line
    echo "Enter ${number_names_arr[i]} number"

    # read inputted number into array
    read -r numbers_arr[i]
done

echo "Output:"
# pass the content of array to the sort command
printf '%s\n' "${numbers_arr[@]}" | sort -rn 
3
27.01.2020, 23:11

Это должно сработать:

#!/usr/bin/env bash

array=("${@}")

while [[ "${1++}" ]]; do
  n=${1}
  <<< "${n}" grep -P -e '^(([+-]?)([0-9]+?)(\.?)(([0-9]+?)?))$' > '/dev/null' \
    || { echo "ERROR: '${n}' is not a number"; exit 1; }
  shift
done

printf '%s\n' "${array[@]}" | sort -rg

Пример:

$ myscript.sh 12 -45 2 -27.75 2.2 0 +25 100 2.15
100
+25
12
2.2
2.15
2
0
-27.75
-45
2
27.01.2020, 23:11

Теги

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