我正在尝试将一个包含空格内容的字符串变量从 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 的全部内容传递。
对于“类似 sh”的 shell,
'
) 替换为 '\''
。例如,
abc def
变成 'abc def'
。ikegami's answer
变成 'ikegami'\''s answer'
。在 Windows 中您需要转义
cmd
。