如何将带空格的字符串变量传递给cpp程序中的shell脚本

问题描述 投票:0回答:1

我正在尝试将一个包含空格内容的字符串变量从 cpp 程序发送到 shell 脚本。但我在 shell 脚本中收到的参数是用空格分隔的。有人可以帮我按原样发送和接收整个字符串吗?

我的Cpp程序

spectrix% cat t.cpp
#include <iostream>
#include <string>

using namespace std;

int main()
{
string cstmrAdrs = "ECit Jlrd blr KA";
string cmd = "/home/user/siteCheck/t.sh " + cstmrAdrs;
int ret = system(cmd.c_str());
cout << "ret = " << ret;
return 0;
}

我的 Shell 脚本

spectrix% cat t.sh
#!/bin/sh

echo $1
echo $2
echo $3
echo $4
spectrix%


spectrix% CC t.cpp
spectrix% ./a.out
ECit
Jlrd
blr
KA
ret = 0

如何将字符串作为 $1 的全部内容传递。

c++ shell sh
1个回答
0
投票

对于“类似 sh”的 shell,

  1. 将每个单引号 (
    '
    ) 替换为
    '\''
  2. 将结果用单引号括起来。

例如,

  • abc def
    变成
    'abc def'
  • ikegami's answer
    变成
    'ikegami'\''s answer'

在 Windows 中您需要转义

cmd

© www.soinside.com 2019 - 2024. All rights reserved.