在C++中使用反引号来执行bash脚本

using back quotes in C++ to exec bash script

本文关键字:执行 bash 脚本 C++      更新时间:2023-10-16

我想从我的C++代码中执行一个需要参数的脚本。这个参数是一个txt文件的上下文,我需要用cat来提供该参数。如何在C++中用参数调用此脚本?

这是我的代码:my_script.sh需要一个参数,我想通过查找my_file.txt来获得这个参数的值。我的问题是cat /tmp/my_file.txt可以从C++中解释吗??

const char * my_array[] = {
"/dir/my_script.sh `cat /tmp/my_file.txt` "   
  .
  .
  .   
 };

读取一行时,shell(bash)会对后引号或任何其他构造进行解释,然后在转换参数后执行命令。执行命令时,可以使用其参数启动命令,也可以使用systembash -c构造来解析参数,但不会发生这种转换。

我强烈建议您使用一个shell脚本,该脚本以文件名为参数,并使用反引号或$()调用您想要的任何命令,因为该脚本由shell执行,并且shell知道如何使用反引号和$()

您可以有一个中间脚本,比如包含的/path/to/laucher

#! /bin/bash
/dir/my_script.sh `cat $1`

在您的c++代码中,您只需调用:

system("/path/to/launcher /tmp/my_file.txt");

我从未听说过在C++字符串或char数组中使用反引号来调用任意代码。

你确定不想要system()函数吗?