Ошибки при попытке установить Ubuntu: сбой программного сброса ata1

Использование if является разумной защитой от неудачного изменения каталога.

Этот код будет выполнять команды в родительском каталоге, если каталог не является исполняемым (нет разрешения x ).

#!/bin/bash
drt="/var/www/html"

for     dir in "${drt}"/*/
do      pushd "$dir"
        pwd
        popd
done

Создайте пару каталогов, измените владельца и разрешения:

$ mkdir -p /var/www/html/{one,two}
$ sudo chown user:user /var/www/html/{one,two}
$ sudo chmod o-x /var/www/html/two
$./script
/var/www/html/one ~/temp
/var/www/html/one
~/temp
./script: line 5: pushd:./var/www/html/two/: Permission denied
~/temp
./script: line 7: popd: directory stack empty

Команда pushd выдала ошибку, но команда pwd была выполнена в каталоге ~/temp (обратите внимание на значение ~/temp, напечатанное сразу после ошибки ). Это явный риск сделать что-то не так. Сравните с этим скриптом:

#!/bin/bash
    drt="./var/www/html"

    for     dir in "${drt}"/*/
    do      if     pushd "$dir" 2>/dev/null
            then
                   pwd
                   popd
            fi
    done

Выполнен новый скрипт:

$./script
/var/www/html/one ~/temp
/var/www/html/one
~/temp

Или даже лучше:

#!/bin/bash
drt="./var/www/html"

for     dir in "${drt}"/*/
do      if     pushd "$dir" 2>/dev/null
        then
               pwd
               popd
        else
                echo "Failed to change to dir=$dir" >&2
                exit 7
        fi
done

Который при выполнении выведет:

$./script
/var/www/html/one ~/temp
/var/www/html/one
~/temp
Failed to change to dir=/var/www/html/two/
1
07.04.2020, 14:04
1 ответ

Оказывается, проблема была в моей видеокарте. Использование видеокарты nvidia и драйверов не работало должным образом. Использовал nomodeset и отключил quicksplash в настройках для работы:)

1
28.04.2021, 23:18

Теги

Похожие вопросы