Программа addr2line
имела ошибку сегментации с ошибкой 6 (при попытке записи в неотображенную память ). Вероятно, в этот момент программа дала сбой.
Подробный ответ о том, как интерпретировать сообщение, содержится в Stack Overflow .
См. http://mywiki.wooledge.org/BashFAQ/050, "Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!"
Это сложнее, чем вы думаете. Каждая команда должна быть помещена в отдельный массив. И поскольку bash не реализует многомерные массивы, вам нужно иметь некоторое управление вокруг него.
Попробуйте это:
CMD_date=( date "+%a %b %d %Y %T" )
CMD_ls=( ls -l )
CMD_sh=( env MyVar="this is a variable" sh -c 'echo "$MyVar"' )
commands=( date ls sh )
for cmd in "${commands[@]}"; do
declare -n c="CMD_$cmd" # set a nameref to the array
"${c[@]}" # and execute it
done
ссылки на имена были введены в bash 4.3 --если ваш bash старше, он все еще может работать с косвенными переменными
for cmd in "${commands[@]}"; do
printf -v tmp 'CMD_%s[@]' "$cmd"
"${!tmp}" # and execute it
done
Лучше :использовать функции:
CMD_date() {
date "+%a %b %d %Y %T"
}
CMD_ls() {
ls -l
}
CMD_sh() {
env MyVar="this is a variable" sh -c 'echo "$MyVar"'
}
commands=( date ls sh )
for cmd in "${commands[@]}"; do
"CMD_$cmd"
done
Я нашел решение, но не знаю, хорошо это или плохо. Приветствуется любой совет:
for (( i=0; i<${#COMMANDS[@]}; i=i+1 )); do
clear
# added bash -c in front.
bash -c "${COMMANDS[$i]}"
gnome-screenshot -w -f "$i".png
done