загрузить сценарий через пользовательскую функцию

В качестве расширения ответа Кристиана я создал следующую функцию bash, которая работает, если окно консоли меньше, чем вывод команды:

function watcher()
{
    lines=$(tput lines)
    while true; do
        output="$($@ | head -n $lines)"
        clear
        echo -e "$output"
        sleep 2
    done
}

Это позволяет передавать любую команду наблюдателю. Если вы используете git, используйте git config --global color.status always , а затем:

watcher git status

Будет отображать постоянно обновляемый вывод статуса git.

1
13.03.2018, 11:37
2 ответа

Это симптоматично для этих двоих вместе:

  • установлен параметр -u, что приводит к тому, что неустановленные переменные вызывают ошибкуunbound variable
  • переменная WARNне была установлена ​​

Чтобы подтвердить или исключить эту ситуацию, выполните:

  • проверьте с помощью echo $-, установлен ли флаг u
  • попробуйте вручную echo "$WARN", чтобы убедиться, что он установлен, или выполните отладку с помощью параметра x
0
28.01.2020, 00:38

Я понял!

При замене declare -rна readonlyошибка больше не появляется.

Using the declare builtin restricts the scope of a variable.

http://tldp.org/LDP/abs/html/declareref.html

Вот как я это исправил:

### log.sh
readonly WARN=3

warn() {
    echo "${WARN}: $@" >&2
}
0
28.01.2020, 00:38

Теги

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