我正在尝试为每次设置新的Linux系统制作一个bash脚本。我的问题是我收到错误说解析错误:
condition expected: =
我认为问题在于它在while循环中,因为它在我删除它时有效,但是while循环对我的程序来说很重要,所以不能删除它。该脚本旨在创建一个列表,显示我可以在我的脚本中执行的选项,它应该有颜色和方法来检查该选项是否已经运行过。该脚本似乎在行后停止工作: 而[$ loop = 1];做 当我尝试在没有while循环的情况下运行它可以工作,所以我认为这可能是问题的原因。
loop=1
scriptstatus=(0 0 0 0 0 0 0 0 );
whatitdoes=('Install terminal programs' 'Install security programs' 'Install normal programs' 'Install spotify' 'Customize gnome' 'Install and customize zsh' 'Install etcher' 'Not yet run' 'Not yet run');
#'$(tput bold)$(tput setaf 1)Not yet run$(tput sgr0)'
while [ $loop = 1 ]; do
answer=""
clear
echo "$(tput bold) Script: What script does: Status:$(tput sgr0)"
COUNTER=0
while [ $COUNTER -lt 7 ]; do
if [[ $scriptstatus[$COUNTER] = 0 ]]
then
echo " ["$COUNTER"] "$'\x1d'" ${whatitdoes[$COUNTER]} "$'\x1d'" $(tput bold)$(tput setaf 1)Not yet run$(tput sgr0)"
elif [[ $scriptstatus[$COUNTER] = 1 ]]
then
echo " ["$COUNTER"] "$'\x1d'" ${whatitdoes[$COUNTER]} "$'\x1d'" $(tput bold)$(tput setaf 2)Completed$(tput sgr0)"
else
echo "error"
fi
let COUNTER=COUNTER+1
done | column -t -s$'\x1d'
echo "quit: Exits the program"
echo "Choose one option:"
read answer
done
答案 0 :(得分:0)
原来我只是错误地写了数组扩展;而不是:
if [[ $scriptstatus[$COUNTER] = 0 ]]
我不得不使用:
if [[ ${scriptstatus[$COUNTER]} = 0 ]]
数组下标需要{
和}
。