【发布时间】:2018-09-01 13:44:24
【问题描述】:
我需要知道控制台(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
有人可以帮帮我吗?
【问题讨论】:
-
因为 shell 脚本和 C++ 代码是两个完全不同的东西
-
如果该脚本在名为
myscript的文件中,当您运行sh myscript时会得到什么? -
@zzxyz:shell 脚本和调用 shell 脚本的 C++ 程序并没有什么不同。 (虽然这绝对不是最好的方法)
-
第一个示例中没有
read命令。第二个示例中的 hashbang 只是一个哈希;也就是说,这不是你的真实例子。这里还有什么与现实不同的地方……?无需修改即可展示您的minimal reproducible example,这样我们就不必浪费时间猜测您实际在运行什么。 -
@LightnessRacesinOrbit - 哦..是的......很公平......我错过了第一次阅读时的 `\` 延续......