Почему sh отображает ошибку, если bash не работает?

Почему следующий скрипт отображает сообщение «неожиданного оператора» и не работает при запуске с SH, но не с BASH.

!/bin/sh if [ $UID -ne 0 ] then echo "You must be root." exit 1 else echo "Open sesame." exit 0 fi 

One Solution collect form web for “Почему sh отображает ошибку, если bash не работает?”

Не все оболочки определяют переменную UID . Это только функция bash и zsh. В других оболочках переменная UID не определена, поэтому ваша тестовая команда расширяется до [ -ne 0 ] которая является синтаксической ошибкой.

Портативный способ получения идентификатора пользователя – с помощью утилиты id .

 if [ "$(id -u)" -ne 0 ]; then … 
  • Как автоматизировать повторяющийся процесс с использованием сценариев оболочки
  • Печатать строку несколько раз
  • Как сгруппировать несколько строк в файле
  • Как быстро добраться до верхней или нижней части очень длинного сценария?
  • Откорректируйте скрипт для получения только определенного выходного отчета rtvscand
  • Как объединить & & &&?
  • Установить переменную на случайный элемент в массиве
  • файл сценария оболочки сценария
  • как выполнить скрипт оболочки из любой директории
  • Создание нескольких сценариев с разными именами файлов
  • Определение переменной в bash с использованием локального ключевого слова
  • Linux и Unix - лучшая ОС в мире.