簡體   English   中英

如何創建將命令行參數傳遞給 shell 腳本的 C++ 程序?

[英]How do I create a C++ program that passes command line arguments to a shell script?

我以前從未使用過 C++,我的教授說這應該“非常簡單”,但我想不通。 這是我到目前為止:

#include <iostream>
#include <cstdio>
#include <cstdlib>

int main(int argc, char *argv[])
{
  char command[50];
  if (argc==2)
    system(command, "./findName.sh", argv[1]);
}  
return 0;

我的 shell 腳本在我自己運行時可以工作,但我不確定如何使用 C++ 程序來運行它。 對於 shell 腳本,用戶應該像這樣輸入用戶 ID:

./findName.sh userID

程序從一個包含姓名和用戶 ID 的文件中返回此人的姓名,如下所示:

LastName, FirstName

對於C++程序,需要將用戶輸入的信息傳遞給shell腳本,並返回相同的結果。

正如我所說,我以前從未使用過 C++,所以我不知道這些是否正確。 這是我在網上找到的東西的混合。 謝謝大家的幫助!!

我發現最簡單的方法是使用std::string ,因為它允許您輕松連接字符串

#include <string>
#include <cstdlib>

int main(int argc, char* argv[])
{
    std::string command = "./findName.sh";

    if(argc == 2)
        std::system((command + " " + argv[1]).c_str());
}

但是要了解為什么這樣做有效,您需要學習一些書籍

首先,您需要先編譯程序,然后才能運行它。 如果你的源代碼文件名是progname.cpp你應該可以使用這個命令:

g++ -o progname progname.cpp

然后像這樣運行程序:

./progname userID

1) system("abc.sh" + para1 + " " + para2); 但是這種方法有一個限制,你可以傳入的最大長度是 MAX_ARG_STRLEN 定義為 131072 字節 = 32 頁內存。

2) 打開一個文件並將所有的值讀到文件系統("abc.sh < yourfile.txt"); 這種方法有點間接,但是您可以將無限大小的值放入 sh 中,使用從 buf(或鍵盤)中的正常讀取

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM