Bash 使用 "let" 的赋值失败并显示“/”
Bash assignment with "let" fails with "/"
我正在使用 GNU bash,版本 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
仅用于算术运算,与(( ))
.
一样
因此,后面几行是一样的
a=$((60 * 60))
let a=(60*60)
((a = 60 * 60))
参见manpage。
let
是一个 shell 内置函数,它是在 bash 中使用 $((..))
Arithmetic Expansion 的另一种方式。作业
let var2=/tmp
被 shell 视为具有不正确商值的算术运算 "division"。相当于做了。
var=$((/tmp))
由于操作数的数量不正确,解析器抛出了您所看到的错误。请注意,tmp
仍由 shell 在变量上下文中处理。如果解析器已将表达式识别为有效,则 tmp
将进行变量扩展。由于之前未设置,因此可能会引发 "division-by-zero" 错误。
对于简单的变量赋值,只需删除 let
关键字并将值字段括在 "quotes"
中
var2="/tmp"
我正在使用 GNU bash,版本 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
仅用于算术运算,与(( ))
.
因此,后面几行是一样的
a=$((60 * 60))
let a=(60*60)
((a = 60 * 60))
参见manpage。
let
是一个 shell 内置函数,它是在 bash 中使用 $((..))
Arithmetic Expansion 的另一种方式。作业
let var2=/tmp
被 shell 视为具有不正确商值的算术运算 "division"。相当于做了。
var=$((/tmp))
由于操作数的数量不正确,解析器抛出了您所看到的错误。请注意,tmp
仍由 shell 在变量上下文中处理。如果解析器已将表达式识别为有效,则 tmp
将进行变量扩展。由于之前未设置,因此可能会引发 "division-by-zero" 错误。
对于简单的变量赋值,只需删除 let
关键字并将值字段括在 "quotes"
var2="/tmp"