无法将点分配给 Bash shell 中的变量

Cannot assign dot to variable in Bash shell

我 运行 通过在终端中键入并在 CentOS 6.5 64 位上执行文件来执行此命令。

let t='.'; echo $t;

无法相信它会产生如此奇怪的错误:

-bash: let: t=.: syntax error: operand expected (error token is ".")

据我所知,不应解析单引号字符串。其实一开始我想做的是:

let $target_path='./files/mp4';

任何人都可以解释这种行为并指导我停止这种奇怪的行为吗?

除非您想将变量值作为算术表达式求值,否则您需要像这样分配 variable 值:

t='.'

let 用于算术表达式的计算,../files/mp4 在该算术表达式中产生语法错误。检查 help let.


下面是如何使用 let 的示例:

a="10*2"
echo "$a" # Prints: 10*2

let a="10*2"
echo "$a" # Prints: 20

如果您关注了下面的讨论,您可能已经注意到,即使对于数学表达式,let 也不是最佳选择。这是因为您可以在 ARITHMETIC EXPANSION 中使用 ARITHMETIC EXPANSION,它由 POSIX 定义,与 let 相反。使用 ARITHMETIC EXPANSION 上面的例子看起来像这样:

a=$((10*2))
echo "$a" # Prints: 20

查看这篇文章以获取更多信息:

这里用let是不对的。 你可以这样做:

AMD$ t='.'
AMD$ echo $t
.

AMD$ t='./files/mp4'
AMD$ echo $t
./files/mp4