Массивы в оболочке Unix?

Необходимо просто сделать это ради всех, у кого нет 22-дюймового широкоэкранного монитора. Лично, я работаю над 17 дюймами 4:3 монитор, и я нахожу что более, чем достаточно широкий. Однако у меня также есть 3 из тех мониторов, таким образом, у меня все еще есть много применимого экранного пространства.

Не только, что, но и человеческий глаз на самом деле имеет проблемы при чтении текста, если строки являются слишком длинными. Слишком легко потеряться, в которой строке Вы идете. Газеты составляют 17 дюймов через (или что-то как этот), но Вы не видите, что они пишут полностью через страницу, то же идет для журналов и других печатных объектов. На самом деле легче читать, если Вы сохраняете столбцы узкими.

78
задан Yves M. 11 June 2015 в 09:56
поделиться

5 ответов

#!/bin/bash

# define a array, space to separate every item
foo=(foo1 foo2)

# access
echo "${foo[1]}"

# add or changes
foo[0]=bar
foo[2]=cat
foo[1000]=also_OK

Вы можете прочитать "Advanced Bash-Scripting Guide" ABS

13
ответ дан 24 November 2019 в 10:26
поделиться

Вы можете попробовать следующий тип:

#!/bin/bash
 declare -a arr

 i=0
 j=0

  for dir in $(find /home/rmajeti/programs -type d)
   do
        arr[i]=$dir
        i=$((i+1))
   done


  while [ $j -lt $i ]
  do
        echo ${arr[$j]}
        j=$((j+1))
  done
5
ответ дан 24 November 2019 в 10:26
поделиться

в bash, вы создаете массив, подобный этому

arr=(one two three)

, для вызова элементов

$ echo "${arr[0]}"
one
$ echo "${arr[2]}"
three

, чтобы запросить ввод пользователя, вы можете использовать read

read -p "Enter your choice: " choice
60
ответ дан 24 November 2019 в 10:26
поделиться

Оболочка Bourne и оболочка C не имеют массивов, IIRC.

В дополнение к тому, что говорили другие, в Bash вы можете получить количество элементов в массиве следующим образом:

elements=${#arrayname[@]}

и выполняйте операции в стиле среза:

arrayname=(apple banana cherry)
echo ${arrayname[@]:1}                   # yields "banana cherry"
echo ${arrayname[@]: -1}                 # yields "cherry"
echo ${arrayname[${#arrayname[@]}-1]}    # yields "cherry"
echo ${arrayname[@]:0:2}                 # yields "apple banana"
echo ${arrayname[@]:1:1}                 # yields "banana"
8
ответ дан 24 November 2019 в 10:26
поделиться

Вы делаете это в ksh:

set -A array element1 element2 elementn

# view the first element
echo ${array[0]}

# Amount elements (You have to substitute 1)
echo ${#array[*]}

# show last element
echo ${array[ $(( ${#array[*]} - 1 )) ]}
1
ответ дан 24 November 2019 в 10:26
поделиться
Другие вопросы по тегам:

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