标签: command-line-arguments

是否可以有可执行文件的名称而不包含路径?

您好,我正在尝试使用可执行文件的名称和用法字符串,我用于argv[0]此目的,但它不是可执行文件本身的名称,而是为我提供了它的完整路径。

有没有办法只获取可执行文件名称?

c command-line command-line-arguments

0
推荐指数
1
解决办法
991
查看次数

C++:如何通过参数进行切换?

所以我有这样的代码

 int main(int argc, char* argv[])
{ 
    string outputUrl ;
    string outputContainer ;
    string outputUserName ;

    for(int i = 0 i>=argc; i+2){
        switch(argv[i]){ //C2450
            case "-server" : {outputUrl += (argv[i+1]);} break; //C2051
            case "-container" : {outputContainer = (argv[i+1]);} break; //C2051
            case "-nickname" : {outputUserName += (argv[i+1]);} break; //C2051
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么它给我编译器错误 C2450 和下一行 C2051?如何解决这样的问题?

c++ command-line command-line-arguments visual-studio-2008 visual-studio

0
推荐指数
1
解决办法
4828
查看次数

使用 Haskell 运行可执行文件

假设有一个 C++ 代码,我使用以下命令编译成可执行文件:

g++ test.cpp -o testcpp
Run Code Online (Sandbox Code Playgroud)

我可以使用终端运行它(我使用的是 OS X),并提供一个用于在 C++ 程序内部处理的输入文件,例如:

./testcpp < input.txt
Run Code Online (Sandbox Code Playgroud)

我想知道从Haskell内部这样做是否可行。我听说过模块中的readProcess函数System.Process。但这仅允许运行系统 shell 命令。

这样做:

out <- readProcess "testcpp" [] "test.in"
Run Code Online (Sandbox Code Playgroud)

或者:

out <- readProcess "testcpp < test.in" [] ""
Run Code Online (Sandbox Code Playgroud)

或者:

out <- readProcess "./testcpp < test.in" [] ""
Run Code Online (Sandbox Code Playgroud)

抛出此错误(或非常相似的错误,具体取决于我使用的是上述哪一个):

testcpp: readProcess: runInteractiveProcess: exec: does not exist (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,Haskell 是否可以这样做。如果是这样,我应该如何使用以及使用哪些模块/功能?谢谢。

编辑

好的,正如大卫建议的那样,我删除了输入参数并尝试运行它。这样做有效:

out <- readProcess "./testcpp" [] ""
Run Code Online (Sandbox Code Playgroud)

但我仍然坚持提供输入。

shell executable haskell command-line-arguments

0
推荐指数
1
解决办法
885
查看次数

bash 脚本中的参数和开关

我需要修改我的一个脚本。到目前为止,它有两个强制性参数,它们指出更新的版本和将应用此更新的数据库

./script.sh version db_name
Run Code Online (Sandbox Code Playgroud)

现在我想添加两个新的可选参数,实际上我应该将其称为开关。这些开关将其扩展为: 1. 在安装之前停止(或不停止)我的 Web 服务器 2. 还将一些新文件安装到文件系统 两者都返回 bool 值。所有细节都在脚本内。所以我期望类似的东西:

./script.sh version db_name -stopweb  -copyfiles
Run Code Online (Sandbox Code Playgroud)

我发现getopts是合适的命令。问题是如何将参数(强制)和开关(可选)“连接”在一起。我真的不明白:(请你给我一些提示。

bash command-line-arguments optionparser

0
推荐指数
1
解决办法
8124
查看次数

argparse:如何要求一组并非全部互斥且并非全部可选的 args?

我试图在argparse. 但是,我有两个问题:

  1. 并非所有的论点都是相互排斥的。
  2. 即使它们都是互斥的,互斥组也要求参数是可选的,并且主函数search(不是必需的)使用位置参数。

理想情况下,我认为'search'是主要功能。因此,我希望它的参数是位置性的;虽然,search不是必需的。但是,至少需要以下一项: search, --name, --list, --add, --import, --encrypt, --decrypt, --delete-database, --rename-database, --backup

另外,--name不是相互排斥的选项,它是那种多用途:

  • 如果它被自身调用,并且它的参数(数据库的名称)不存在,则将创建它。
  • 如果(数据库)确实存在,则将其用作调用它的任何其他选项函数的参数:例如, -n myfirstdb --decrypt
  • 而如果--name不存在,我假设最近访问的数据库。

目前,我必须运行一个开始变得繁重的检查,以查看是否调用了任何主要选项,并测试是否--name存在。

最后,显然互斥的选项不能一起使用。

我怎样才能search成为这个必需的互斥群体的一部分?我怎样才能成为--name这个必需的组中的一个,但又不与其中任何一个互斥?

我正在试验子解析器,但我不确定它们是否能解决我的问题。任何建议都可能为我节省几天的反复试验时间,非常感谢。

parser.add_argument(
    'search', nargs='*', type=str, metavar='S', help='search [field] for string(s)')
parser.add_argument(
    '--name', '-n', type=str, help='name of the database; created if does not exist')

main_ex_group = parser.add_argument_group(
    title='main functions').add_mutually_exclusive_group()
main_ex_group.add_argument(
    '--list', '-l', action='store_true', help='list …
Run Code Online (Sandbox Code Playgroud)

python command-line command-line-arguments argparse python-3.x

0
推荐指数
1
解决办法
1596
查看次数

Haskell IO:打印命令行参数

我有这个程序,它只是打印出命令行参数。

echoArgs :: IO ()
echoArgs = do
        line <- getArgs
        print line
Run Code Online (Sandbox Code Playgroud)

我想知道的是为什么当我输入时会失败:

echoArgs :: IO ()
echoArgs = do
            line <- getArgs
            putStrLn line
Run Code Online (Sandbox Code Playgroud)

以及为什么当我将其更改为以下内容时它不起作用:

echoArgs :: IO String
    echoArgs = do
                line <- getArgs
                let line' = read line :: String
                putStrLn line'
Run Code Online (Sandbox Code Playgroud)

io monads haskell command-line-arguments do-notation

0
推荐指数
1
解决办法
122
查看次数

如何要求 argv[1] 为 int?

我必须检查它argv[1]是一个int,否则打印“错误”。

有小费吗?到目前为止,我所拥有的显然是不正确的。

int main(int argc, char *argv[])
{  
    if (argc == 2 && (int) argv[1] > 0)
    {
        printf("Hello, %s\n", argv[1]);
    }
    else
    {
        printf("ERROR\n");
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

c command-line-arguments

0
推荐指数
2
解决办法
147
查看次数

如何更改linux命令中的特定行

我如何更改特定行的此文本

假设我想更改第 50 行,并且我想更改“user”之后的 8 个字母 就像下面我加粗的例子

第 50 行“用户”:“ 9077c266 -8944-11eb-a9d1-fa163e4be1a2”

shell command-line command-line-arguments

0
推荐指数
1
解决办法
49
查看次数

为什么我的代码在 9 之后没有生成阶乘?

用 C 编写一个程序来计算从命令行传递的数字的阶乘。阶乘必须在一个名为 computeFact() 的单独函数中计算,该函数具有以下原型: int computeFact(int,…);

#include <stdarg.h>
#include <stdio.h>
#include<stdlib.h>
int computeFact(int, ...);
int main(int argc, char *argv[]) 
{
  if (argc < 2) 
  {
    printf("Invalid!");
  } else {
    for (int i = 1; i < argc; i++)
    {
      int n = atoi(argv[i]);
      printf("Factorial of %d is %d\n", n, computeFact(n));
    }
  }
  printf("\n");./
  return 0;
}
int computeFact(int num, ...) 
{
  va_list valist;
  int fact = 1;

  va_start(valist, num);
  for (int i = 0; i < num; i++) 
  { …
Run Code Online (Sandbox Code Playgroud)

c variadic-functions command-line-arguments

0
推荐指数
1
解决办法
68
查看次数

如何将参数传递给 make 规则?

假设我有一个使用 make 安装的 python 项目。我希望无需先安装即可运行该项目。所以我创建了这个 make 规则:

run:
    @echo "Running projectname"
    @PYTHONPATH=${PYTHONPATH}:$(abs_srcdir)/..; ./projectname
Run Code Online (Sandbox Code Playgroud)

Where./projectname运行一个简单的 python 脚本来设置和运行项目,但这在这里并不重要。像这样,我可以简单地make run在项目的根文件夹中执行来执行和测试我的应用程序,它工作得很好。现在,我想将一些命令行参数传递给程序。我试过了make run --help,它只是打印了make帮助文本。运行make run -- --help打印

run:
    @echo "Running projectname"
    @PYTHONPATH=${PYTHONPATH}:$(abs_srcdir)/..; ./projectname
Run Code Online (Sandbox Code Playgroud)

应用程序运行,在我退出后,make尝试执行一个 target --help

现在,我如何通过例如将--help参数传递给我的应用程序make

command-line arguments makefile sh command-line-arguments

0
推荐指数
1
解决办法
22
查看次数