Кажется, я обнаружил, что проблема вызвана сценарием, выполняющим все команды (, кроме первой )в фоновом режиме. Я могу заставить первую команду иметь ту же проблему, разветвив ее с помощью &
.
После того, как я не смог найти способ заставить сценарий запускать каждую команду на переднем плане, одну -после -и -другую, я нашел альтернативное решение...
Я могу поместить все команды в пользовательский файл 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
Часть проблемы заключалась в том, что внешний цикл 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[@]}"