Как получить пользовательский ввод в виде числа и отобразить значение сохраненного массива этого числа в скриптах bash - PullRequest
0 голосов
/ 14 октября 2018

Я написал сценарий, который генерирует выходные данные запущенных процессов узла вместе с cwd этого процесса, и я сохраняю значение в массиве, используя цикл for, и выполняю вывод этого массива.Как я могу заставить пользователя ввести индекс массива относительно вывода, который генерирует сценарий, и показать выходные данные на основе этого ввода, сгенерированного пользователем.1005 *

Я хочу чего-то большего.Я хочу получить ввод от пользователя, как

Enter the regarding index from above list = 1

И давайте предположим, что пользователь вводит 1 Тогда следующий вывод должен быть

Your selected value is 2064

Возможно ли это в bash

1 Ответ

0 голосов
/ 14 октября 2018

Во-первых, вы на самом деле не используете массив, вы храните обычную строку в переменной «массив».Строка содержит слова, разделенные пробелом, поэтому при указании переменной в операторе for значение без кавычек зависит от Разделение слов

Для настройки необходимо использовать синтаксис массивамассив:

array=( $(netstat -nlp | grep node) )

Однако подстановка команды без кавычек все еще предоставляет вам Расширение имени файла .Лучший способ сохранить строки команды в массиве - использовать команду mapfile с подстановкой процесса:

mapfile -t array < <(netstat -nlp | grep node)

И в цикле for убедитесь, что вы заключили в кавычки все переменныеи используйте индекс @

for i in "${array[@]}"; do 
    echo "$i"
done

Примечания:

  1. массивы, созданные с mapfile, начнутся с индекса 0, так что будьте осторожныошибки

  2. Я не знаю, как переменные реализованы в bash, но есть такая странность:

    • , если вы ссылаетесь на массив безиндекс, вы получите первый элемент:

      array=( "hello" "world" )
      echo "$array"       # ==> hello
      
    • Если вы обратитесь к простой переменной с синтаксисом массива и нулевым индексом, вы получите значение:

      var=1234
      echo "${var[0]}"    # ==> 1234
      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...