gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:24:52 25 4
gpt4 key购买 nike

我需要知道控制台(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

有人可以帮帮我吗?

最佳答案

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

我建议您将脚本写入文件x,然后通过

执行该文件
system("bash x")

这会在您的终端上显示变量 CURPOS 的值。

关于c++ - 为什么 C++ 中的 shell 脚本代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com