为什么 C++ 中的 shell 脚本代码不起作用?

why shell script code in c++ don't work?

本文关键字:代码 不起作用 脚本 shell C++ 中的 为什么      更新时间:2023-10-16

我需要知道控制台(Ubuntu(中的下一个自由行,所以我用C++编写了这段代码

using namespace std;
#define SCRIPTGETNEXTLINE "#!/bin/bash n
echo -en "\E[6n"n
read -sdR CURPOS
CURPOS=${CURPOS#*[}n
CURPOS=$(echo $CURPOS | cut -d ';' -f 1)n
echo $CURPOS"
int main (){
    system(SCRIPTGETNEXTLINE);
    return 0;
}

但是我得到了错误:

sh: 2: read: Illegal option -s

在脚本中这有效

#/bin/bash
echo -en "E[6n"
read -sdR CURPOS
CURPOS=${CURPOS#*[}
CURPOS=$(echo $CURPOS | cut -d ';' -f 1)
echo $CURPOS

有人可以帮我吗?

-s

选项被 bashread 命令理解,但您是在 sh 下运行它,并且 Posix shell 的read不知道 -s。 请注意,在您的情况下,将忽略#!行,因为您将整个命令作为字符串传递。

我建议你将脚本写入文件 x 然后通过以下方式执行文件

system("bash x")

然后,这将向终端显示变量 CURPOS 的值。