let
- это встроенная оболочка, которая является еще одним способом использования $((..))
Arithmeti c Expansion в bash. Присваивание
let var2=/tmp
обрабатывается оболочкой как арифметическая операция c «деление» с неверным значением частного. Это эквивалентно действию.
var=$((/tmp))
Поскольку имеется неправильное количество операндов, синтаксический анализатор выдал ошибку, которую вы видите. Обратите внимание, что tmp
по-прежнему обрабатывается оболочкой в контексте переменной. Если бы синтаксический анализатор идентифицировал выражение как действительное, тогда tmp
подверглось бы расширению переменной. Поскольку он не был установлен ранее, это, вероятно, привело бы к ошибке «деления на ноль».
Для простого назначения переменных просто отбросьте ключевое слово let
и заключите поле значения в «кавычки»
var2="/tmp"