Я делаю домашнее задание для класса сценариев оболочки, и у меня возник вопрос, в котором меня просили написать сценарий, который проверяет, является ли введенный аргумент допустимым именем переменной оболочки. Приведенный ниже скрипт работает нормально.
if echo "$1" | grep -v ".*[^A-Za-z_]" > /dev/null
then
echo yes
else
echo no
fi
Я понимаю, что скобки - это сокращение для тестовой функции в оболочке BASH. Моя проблема в том, что когда я попытался выполнить приведенный выше скрипт с помощью скобок, я получил ошибку.
if [ echo "$1" | grep -v ".*[^A-Za-z_]" > /dev/null ]
Проблема с этим (я полагаю) заключается в том, что grep пытается использовать ] в качестве аргумента, что приводит к ошибке при запуске скрипта.
В каких случаях скобки не нужны?