Как создать как много переменных по мере необходимости из сценария оболочки (удар)?

Интерфейс/sys/class/backlight имеет это. Т.е.

echo 4000 > /sys/class/backlight/intel_backlight/brightness 

Другие интересные значения:

cat /sys/class/backlight/intel_backlight/max_brightness
4648
cat /sys/class/backlight/intel_backlight/actual_brightness
4000

Отметьте, PR. значение по умолчанию, они являются записываемыми корнем только.

0
23.05.2013, 21:27
2 ответа

Похоже, что Ваш синтаксис массива прочь просто немного. Кроме того, нет никакой потребности в индексной переменной; можно использовать += оператор для добавления к массиву.

#!/bin/bash

FILENAME=$1

rutaServ=()
while read LINE
do
rutaserv+=($LINE)
echo "ruta -> $LINE"
done < "$FILENAME"

bash v4 имеет новую команду, mapfile (или readarray) считать содержание файла в массив внезапно:

mapfile rutaServ < "$FILENAME"

К доступу оценивает от массива:

for x in "${rutaserv[@]}"; do
    echo "$x"
done
3
28.01.2020, 02:21
  • 1
    Хорошо, попробованный это и работало, но после цикла, если я пробую что-то как echo $LINE Я ничего не получаю в выводе. Как я могу получить доступ к значениям массива? –  Edgar Sampere 13.05.2013, 19:58
  • 2
    ! это работало! Теперь у меня есть сомнение, что делает, обозначает в индексном массиве? –  Edgar Sampere 13.05.2013, 20:24
  • 3
    Думайте о нем как "для всех": это разворачивает массив до списка слов, одного слова на элемент в массиве. Это заключается в кавычки так, чтобы любой элемент, который содержит пробел, рассматривали как отдельное слово. –  chepner 13.05.2013, 20:38

Мог сценарий быть названным как script.sh process1 process2? Затем Вы могли обратиться к спорам с $@:

# set process1 process2 # set arguments for testing

for x in "$@"; do 
    echo "ruta -> $x"
done

[rutaServ$i]=$LINE должен быть rutaServ[$i]=$LINE или rutaServ+=("$LINE").

1
28.01.2020, 02:21
  • 1
    я попробовал Ваше предложение за индекс, прежде чем я попробую опцию аргументов, потому что, я не знаю, сколькими будут процессы, могло занять много времени писать все аргументы. Так... вот мой новый код, где в конце я тестирую переменные... while read LINE do rutaServ[$i]=$LINE echo "ruta -> $rutaServ$i" done < "$FILENAME" i=1 while [ $i -le 3 ] do echo $rutaServ$i i=$i expr + 1' сделанный' Теперь это работает сохранением переменных, но при печати, это добавляет число к пути: /home/user/ruta31 /home/user/ruta32 /home/user/ruta33 –  Edgar Sampere 13.05.2013, 20:12
  • 2
    Можно получить доступ к элементам массива как echo "${rutaServ[$i]}". большой –  Lri 13.05.2013, 20:23

Теги

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