hir*_*ate 1 bash shell centos6.5
我通过键入终端和在CentOS 6.5 64位上执行文件来运行此命令.
let t='.'; echo $t;
Run Code Online (Sandbox Code Playgroud)
无法相信它会产生如此奇怪的错误:
-bash: let: t=.: syntax error: operand expected (error token is ".")
Run Code Online (Sandbox Code Playgroud)
据我所知,不应解析单引号字符串.事实上,首先,我想做的是:
let $target_path='./files/mp4';
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这种行为并指导我停止这种奇怪的行为吗?
hek*_*mgl 10
除非您想将变量值计算为算术表达式,否则需要像这样分配变量值:
t='.'
Run Code Online (Sandbox Code Playgroud)
let用于计算算术表达式,.或者./files/mp4在算术表达式中产生语法错误.检查help let.
这里有一个例子如何let使用:
a="10*2"
echo "$a" # Prints: 10*2
let a="10*2"
echo "$a" # Prints: 20
Run Code Online (Sandbox Code Playgroud)
如果你按照下面的讨论,你可能已经注意到,即使是数学表达式let也不是最好的选择.这是因为你可以ARITHMETIC EXPANSION在那种由POSIX定义的情况下使用let.使用ARITHMETIC EXPANSION上面的示例将如下所示:
a=$((10*2))
echo "$a" # Prints: 20
Run Code Online (Sandbox Code Playgroud)
查看这些文章以获取更多信息: