Лучший способ сделать переменные локальными в исходном сценарии bash?

Как @pbm говорит, я думаю, что действительно хорошо иметь разделенный /home раздел диска.

Это позволило мне переключаться между несколькими Linux distibution, никогда не теряя мои персональные данные. Это - огромное преимущество. Иметь это в виду.

Теперь я все еще колеблюсь между debian и человечностью. Но это не проблема, мои данные безопасны.

7
30.07.2015, 21:47
2 ответа

cp --reflink = всегда почти наверняка работает правильно. Если бы это не было так, вы бы получили ошибку. По конструкции это разница между --reflink = всегда и --reflink = auto . Ошибка может выглядеть следующим образом:

# Filesystem that does not support the feature at all
cp: failed to clone `xx' from `yy': Inappropriate ioctl for device

# Filesystem that does support it, but copy across filesystems
cp: failed to clone `xx' from `yy': Invalid cross-device link

Вы копируете структуру каталогов с большим количеством небольших файлов? В этом случае cp по-прежнему должен создавать каждый каталог и открывать и закрывать каждый файл, так что это все равно займет время, в отличие от btrfs субобъемный снимок . Это, скорее всего, объясняет время, необходимое для выполнения операции.

-121--37006-

Для удаления репозитория необходимо выполнить 2 действия:

  • Удалить его из sources.list .

    Если он был добавлен add-apt-repository , его можно найти в файле /etc/apt/sources.list.d , а не в основном sources.list .

     sudo rm/etc/apt/sources.list.d/nemh-systemback-precise.list
    
  • Необязательно: прекратите доверять ключу

    Используйте список apt-key для вывода списка доверенных ключей. Ищите запись типа «Launchpad PPA for Kendek» в данном случае. Затем удалите его с помощью apt-key del :

     sudo apt-key del 73C62A1B
    
-121--9625-

Заключите весь сценарий, который вы хотите получить, в функцию, добавьте локальный перед объявлениями, которые вы хотите использовать только в функции, и вызовите функцию в конце сценария.

func () {
    local name="My awesome job"

    nowTime=`expr $(date +%s) `
    lastActiveTime=`expr $(date +%s -r ~/blah.log)`
    local secsSinceActive=`expr $nowTime - $lastActiveTime`

    currentRaw=$(cat ~/blah.log | grep "Progress" | tail -n 1)
    if [ -z "$currentRaw" ]; then
      local statusText="Not running"
    else
      local statusText="In progress"
    fi
}
func
8
27.01.2020, 20:18

Я считаю, что синтаксис для создания локальной переменной в bash таков:

local variable_name=

Я знаю, что это работает для функций, и не уверен, как это работает с несколькими скриптами.

-1
27.01.2020, 20:18

Теги

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