繁体   English   中英

如何接受文字“ *”作为命令行参数?

[英]How do I accept a literal “*” as a command-line argument?

我正在用rust写一个非常简单的命令行计算器,先得到一个数字,一个运算符,然后是另一个数字,然后进行计算并打印结果。 为了显示我从命令args得到的内容,我将它们打印在主代码之前的循环中。 对于加号,减号和除法,我可以正常工作,但是对于乘法,在打印时会得到意外的结果,而不是星号(*)用于乘法,但是会在当前目录中得到文件列表。 这是我的rust代码,如果有任何解决方法,我将感谢您的解释。

use std::env;

fn main(){
    let args: Vec<String> = env::args().collect();

    for arg in args.iter(){
        println!("{}", arg);
    }

    let mut result = 0;
    let opt = args[2].to_string();
    let oper1 = args[1].parse::<i32>().unwrap();
    let oper2 = args[3].parse::<i32>().unwrap();
    match opt.as_ref(){
        "+" => result = oper1 + oper2,
        "-" => result = oper1 - oper2,
        "*" => result = oper1 * oper2,
        "/" => result = oper1 / oper2,
        _ => println!("Error")
    }

    println!("{} {} {} = {}", oper1, opt, oper2, result);

}

通配符(*)正在扩展。 Shell甚至会在看到您实际键入的内容之前将其发送给程序

您可以在此处了解更多信息。

为了避免这种情况,您可以将其用引号引起来,如下所示:

./program 1 "*" 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM