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