用 "let "进行的Bash赋值失败,用""

问题描述 投票:0回答:1

我使用 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")

有人知道为什么吗?谢谢你

bash syntax-error variable-assignment
1个回答
1
投票

let 是一个内置的shell,是另一个使用 $((..)) 算术扩展 在bash中。赋值

let var2=/tmp 

被shell视为一个商值不正确的算术运算 "除法"。它相当于doing。

var=$((/tmp))

由于操作数不正确,解析器抛出了你所看到的错误。需要注意的是 tmp 仍然被shell在变量上下文中处理。如果解析器已经将表达式识别为有效,那么 tmp 将会进行变量扩展,由于之前没有设置,它很可能会抛出 "逐零除法 "错误。由于之前没有设置,所以很可能会抛出一个 "除以零 "的错误。

对于简单的变量赋值,只需将 let 关键字,并将值字段用 "引号 "括起来。

var2="/tmp"

1
投票

let 只用于算术运算,正如 (( )).

因此,以下几行是相同的

a=$((60 * 60))
let a=(60*60)
((a = 60 * 60))

网页.

© www.soinside.com 2019 - 2024. All rights reserved.