无法在Bash shell中为dot赋值

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)

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