Как сделать выполнение встроенных команд через ssh

#!/bin/echo Run this script with: bash

if ! [ "$BASHOPTS" ]
then
    echo Run this script as bash script.sh
    exit 1
fi
... rest of script here ...

Это предотвращает (полезное) выполнение с помощью ./script.sh, вызывает двоичный файл echo вместо интерпретатора оболочки и печатает сообщение в первой строке, за которым следует имя сценария.

При запуске в оболочке, отличной от Bash, или в Bash в режиме POSIX (как в случае с sh), переменная BASHOPTS почти наверняка не будет установлена, а тело if запустится, распечатает сообщение и завершится с ошибкой.

Это работает в версиях Bash 4-й серии при использовании как sh; для более ранних версий возможно if ! [ "$BASH" ] || ! [ "${BASH##*/}" = "bash" ] — ваш лучший выбор, который проверяет, заканчивается ли путь к интерпретатору /bash.Если ваш sh не Bash, достаточно просто проверить $BASH.

Честно говоря, я думаю, что вы, скорее всего, решаете не ту задачу, но это сделает то, о чем вы просили.

1
10.03.2016, 18:55
0 ответов

Теги

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