我需要知道控制台中的下一个空闲行(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选项由read
的bash
命令理解,但是您正在sh
下运行它,并且Posix shell的read
不知道-s。注意,在这种情况下,#!
行将被忽略,因为您将整个命令作为字符串传递。
我建议您将脚本写入文件x,然后通过以下方式执行文件:
system("bash x")
然后将在终端显示变量CURPOS的值。
关于c++ - 为什么C++中的Shell脚本代码不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49440207/