проблема с массивами bash, содержащими как команды, так и пути

Кажется, я обнаружил, что проблема вызвана сценарием, выполняющим все команды (, кроме первой )в фоновом режиме. Я могу заставить первую команду иметь ту же проблему, разветвив ее с помощью &.

После того, как я не смог найти способ заставить сценарий запускать каждую команду на переднем плане, одну -после -и -другую, я нашел альтернативное решение...

Я могу поместить все команды в пользовательский файл screenrc (, например, мой _screenrc )как таковой:

# Import default screenrc
source ${HOME}/.screenrc

# Run screen-specific commands (not bash ones)
screen     # Run bash in window 0
screen vim # Run vim in windows 1 through 3 (with correct settings)
screen vim
screen vim

Затем я могу запустить это из bash с помощью:

screen -c my_screenrc
1
11.02.2020, 17:21
1 ответ

Часть проблемы заключалась в том, что внешний цикл for сохранял каждый элемент как отдельную переменную, а внутренний цикл for удалял первый символ. исправленная функция такова:

check_install() {

        echo "${@: -1}"
        if ! [ -x "$(command -v $1)" ]; then
            for path in "${@: -1}"
            do
                echo locally untracking $path
                git update-index --skip-worktree "$path"
                rm -r "$path"
            done
        fi

}

На переменные массива также ссылались неправильно, так как передавался только первый элемент. правильный способ, упомянутый @steeldriver,"${kak[@]}"

0
28.04.2021, 23:23

Теги

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