gohellp
@gohellp
Громкое "Ы" из темноты

Как и куда bash убирает элемент массива?

Решил сделать скрипт, который будет смотреть вывод бота по завершению оного и искать там "reboot", дабы перезапустить его и начать всё заново. Пока не придумал, как сам скрипт буду перезапускать из него же, но не об этом сейчас(хотя, если предложите, как это реализовать, то буду только благодарен). Пока что, тестирую на данном js скрипте:
console.log("test");
console.log("test1");


Сам bash скрипт:
read -p "Enter the programm's path with .js: " path
    cd $path
    echo "node $path/main.js"
    nodeLogs="$(node $path/main.js)"
        echo $nodeLogs
        IFS="\n" read -a nodeLogsArr <<< "$nodeLogs"
            echo "${nodeLogsArr[1]}"
            for element in "${nodeLogsArr[@]}"; do
                echo "$element"
            done
            for logs in ${nodeLogsArr[@]}; do
                if (($logs="reboot")); then
                    echo "U couldn't see it!!!"
                    #git pull
                else
                    echo "$logs"
                fi
            done


Получается так, что скрипт после перевода многострочной строки в элементы массива, куда-то девает второй элемент "test1". Изучал разбиение с помощью IFS по этому гайду. Сделал, вроде, как надо, но оно не хочет работать...

Вывод скрипта:
$ ./test
Enter the programm's path with .js: .
node ./main.js
test test1

test
test

Может, я пытаюсь неправильно разбить строку?

Заранее благодарен за ответ
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
в простом случае:
$ x='test1 test2'
$ y=($x)
$ echo ${y[0]} И ${y[1]}
test1 И test2


если же, например, у нас разделитель перевод строки то:
$ x='test 1
test 2'
$ q="$IFS";IFS=$'\n';y=($x);IFS="$q"
$ echo ${y[0]} И ${y[1]}
test 1 И test 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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