Команда «Читать» в сценарии bash пропускается

я создаю сценарий для обновления своего дистрибутива Linux, если мне нужно стереть жесткий диск или мне нужно установить Linux на другую машину. Таким образом, этот сценарий в основном устанавливает все программы, которые мне обычно нужны. Вначале у вас есть команда «читать», которая спрашивает, хочу ли я установить все пакеты автоматически или нет. Если я выберу «нет», для каждой программы, которую не удалось найти, она должна спросить меня, хочу ли я ее установить, и я использую этот код

if [[ $installall == "yes" ]]; then
    echo " Installing $sciprog..."
    sudo apt-get install -y $sciprog >/dev/null
    {
        scitest=`dpkg -s $sciprog | grep Status`
    } 2>${HOME}/musthave.errorlog
    if [[ $scitest != "Status: install ok installed" ]]; then
        echo " I've encountered problems installing $sciprog that I can't resolve. "
        echo " Consider installing $sciprog manually. "
        {
            echo "=========="
            echo " $sciprog"
        } >>${HOME}/musthave.notinstalled
    else
        echo " $sciprog installed correctly!"
        {
            echo "=========="
            echo " $sciprog"
        } >>${HOME}/musthave.installed
    fi
else
    echo " Seems like $sciprog is not installed... Do you want to download it?"
    echo " Type 'y' for yes."

    read secondyn ### THIS IS THE GUILTY COMMAND ###

    if [[ $secondyn == "y" ]]; then
        echo " Installing $sciprog ..."
        sudo apt-get install -y $sciprog >/dev/null
        {
            checkinstall=`dpkg -s $sciprog | grep Status`
        } 2>>${HOME}/musthave.errorlog
        if [[ $checkinstall != "Status: install ok installed" ]]; then
            echo " I've encountered problems installing $sciprog that I can't resolve. "
            echo " Consider installing $sciprog manually. "
            {
                echo "=========="
                echo " $sciprog"
            } >>${HOME}/musthave.notinstalled
        else
            echo " $sciprog installed correctly!"
            {
                echo "=========="
                echo " $sciprog"
            } >>${HOME}/musthave.installed
        fi
    else
        echo " Skipping $sciprog ..."
        {
            echo "=========="
            echo " $sciprog"
        } >>${HOME}/musthave.notinstalled
    fi
### some more code which works as expected. All the code above is inside a 
### while...do...done loop which reads line by line the file at the end
done <${HOME}/file.list

. Но если я запускаю сценарий, он пропускает команду «read» в предложении else и предполагает be "n" ...

Я не могу понять, почему, внутри циклов if ... then ... else ... fi есть другая функция чтения, и они работают должным образом ...

Есть идеи?

7
задан 3 August 2011 в 09:20
поделиться