无法将点指定给Bash shell中的变量
我通过键入Terminal和在CentOS 6.5 64位上执行file来运行此命令无法将点指定给Bash shell中的变量,bash,shell,centos6.5,Bash,Shell,Centos6.5,我通过键入Terminal和在CentOS 6.5 64位上执行file来运行此命令 let t='.'; echo $t; 真不敢相信它会产生如此严重的错误: -bash: let: t=.: syntax error: operand expected (error token is ".") 据我所知,单引号字符串不应该被解析。事实上,首先,我想做的是: let $target_path='./files/mp4'; 有人能解释一下这个行为并指导我停止这个wierd行为吗?除非你想用
let t='.'; echo $t;
真不敢相信它会产生如此严重的错误:
-bash: let: t=.: syntax error: operand expected (error token is ".")
据我所知,单引号字符串不应该被解析。事实上,首先,我想做的是:
let $target_path='./files/mp4';
有人能解释一下这个行为并指导我停止这个wierd行为吗?除非你想用算术表达式来计算变量值,否则你需要这样赋值:
t='.'
a=$((10*2))
echo "$a" # Prints: 20
let
用于计算算术表达式,并且
或/files/mp4
在该算术表达式中产生语法错误。选中帮助让
下面是如何使用
let
的示例:
a="10*2"
echo "$a" # Prints: 10*2
let a="10*2"
echo "$a" # Prints: 20
如果您遵循下面的讨论,您可能已经注意到,即使对于数学表达式
let
也不是最佳选择。这是因为您可以在这种情况下使用算术展开
,它是由POSIX定义的,与let
相反。使用算术展开
上述示例如下所示:
t='.'
a=$((10*2))
echo "$a" # Prints: 20
查看本文章以了解更多信息:
- 在这里使用
让是不对的。
您可以这样做:
AMD$ t='.'
AMD$ echo $t
.
AMD$ t='./files/mp4'
AMD$ echo $t
./files/mp4
只需使用target\u path='./files/mp4'
。bash中的变量设置为var=“value”
,而不是$var=“value”
。要在以后使用,请使用美元:echo“$var”
。此外,不需要使用另外,请注意,let
通常是必需的,因为您还可以编写a=$((10*2))
(这有利于成为POSIX标准的一部分)。@chepner我不确定let
和算术扩展是否也可以这样做。我想不是。文档中没有明确说明这一点。此外,OP正在搜索字符串赋值。这就是为什么我不想指出let
的替代方法,我只是想说明let
赋值和字符串赋值之间的基本区别。(我确实有一个拼写错误,应该是“let
通常是不必要的”)。至少,let
被(…)
命令取代。根据手册页,let“expression”
与((expression))
(和+1相同,因为至少在这种情况下,您需要的是常规赋值。只是想指出,let
本身可能永远不需要,不知道它的存在可以避免这种类型的错误。)根据手册页,让“expression”与((expression))相同
这就是我需要的。我只是不太确定。非常感谢!