我使用 GNU bash, versión 5.0.3(1)-release (x86_64-pc-linux-gnu), 我不知道为什么一个简单的赋值语句会出现语法错误。
#/bin/bash
var1=/tmp # This works
let var2=/tmp # This fails with syntax error: Operand expected (error is "/tmp")
有人知道为什么吗?谢谢你
let
是一个内置的shell,是另一个使用 $((..))
算术扩展 在bash中。赋值
let var2=/tmp
被shell视为一个商值不正确的算术运算 "除法"。它相当于doing。
var=$((/tmp))
由于操作数不正确,解析器抛出了你所看到的错误。需要注意的是 tmp
仍然被shell在变量上下文中处理。如果解析器已经将表达式识别为有效,那么 tmp
将会进行变量扩展,由于之前没有设置,它很可能会抛出 "逐零除法 "错误。由于之前没有设置,所以很可能会抛出一个 "除以零 "的错误。
对于简单的变量赋值,只需将 let
关键字,并将值字段用 "引号 "括起来。
var2="/tmp"