2

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

let t='.'; echo $t;

不敢相信它会产生如此奇怪的错误:

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

据我所知,不应解析单引号字符串。事实上,首先,我想做的是:

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

谁能解释这种行为并指导我停止这种奇怪的行为?

4

2 回答 2

10

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

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在这种情况下使用 POSIX 定义的与let. 使用ARITHMETIC EXPANSION上面的示例将如下所示:

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

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

于 2015-04-08T10:51:10.590 回答
0

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

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

AMD$ t='./files/mp4'
AMD$ echo $t
./files/mp4
于 2015-04-08T10:52:07.123 回答