将命令行参数传递给从c ++程序调用的bash shell脚本

时间:2015-11-19 08:47:00

标签: c++ bash shell unix

我只是从我的c ++程序中调用shell脚本。 Shell脚本正在成功执行。但是我无法通过c ++程序接收传递给shell脚本的命令行参数。

#include<iostream>


    int main()
    {
       system(". script.sh a b v d d");


       return 0;
    }

SHELL

echo "start | $2 | $1 | $3"

O / P:

./a.out
start |  |  |

1 个答案:

答案 0 :(得分:1)

当您要将shell脚本的内容加载到当前shell时,将应用您使用的语法。这意味着,加载变量定义,函数等。

system(". script.sh a b v d d");
        ^^^^^^^^^^^

等效运行:

system("source script.sh a b v d d");
        ^^^^^^^^^^^^^^^^

您应该使用以下语法之一调用脚本:

system("./script.sh a b v d d");
system("bash script.sh a b v d d");

因此,当您执行程序时,唯一发生的事情是您的脚本是 source &#39; d。没有任何参数传递给它。这为您提供了在没有任何输入参数的情况下运行echo "start | $2 | $1 | $3"的输出。