为什么process.argv [3]在'*'时会返回完全意外的内容?

时间:2017-03-31 05:55:34

标签: javascript node.js

我有一个非常简单的计算器应用程序:

if (process.argv[3]==='+') console.log(parseInt(process.argv[2]) + parseInt(process.argv[4]));
if (process.argv[3]==='-') console.log(parseInt(process.argv[2]) - parseInt(process.argv[4]));
if (process.argv[3]==='*') console.log(parseInt(process.argv[2]) * parseInt(process.argv[4]));
if (process.argv[3]==='/') console.log(parseInt(process.argv[2]) / parseInt(process.argv[4]));
console.log(process.argv[3])  

2 + 2,2-2,2 / 2都按预期工作,但2 * 2将注销脚本名称。
为什么会这样?什么是乘法符号?

1 个答案:

答案 0 :(得分:1)

因为*是一个shell通配符,它​​对shell有特殊意义,在将它传递给节点之前将其展开。

您必须使用\*这样或"*"'*'这样传递。