我通过输入终端和在CentOS 6.5 64位上执行文件来运行此命令。
let t='.'; echo $t;
无法相信它会产生如此错误的错误:
-bash: let: t=.: syntax error: operand expected (error token is ".")
据我所知,不应解析单引号字符串。事实上,首先,我想做的是:
let $target_path='./files/mp4';
任何人都可以解释一下这种行为并引导我停止这种奇怪的行为吗?
答案 0 :(得分:10)
除非您想将变量值计算为算术表达式,否则需要像这样分配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
,它由POSIX定义,与let
相反。使用ARITHMETIC EXPANSION
上面的示例如下所示:
a=$((10*2))
echo "$a" # Prints: 20
查看这些文章以获取更多信息:
答案 1 :(得分:0)
在这里使用let
是不对的。
你可以这样做:
AMD$ t='.'
AMD$ echo $t
.
AMD$ t='./files/mp4'
AMD$ echo $t
./files/mp4