在Bash脚本中解析错误

时间:2017-07-13 02:37:16

标签: linux bash

我正在尝试为每次设置新的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

1 个答案:

答案 0 :(得分:0)

原来我只是错误地写了数组扩展;而不是:

 if [[ $scriptstatus[$COUNTER] = 0 ]]

我不得不使用:

 if [[ ${scriptstatus[$COUNTER]} = 0 ]]

数组下标需要{}