screen_name="test"
screen -dmS $screen_name
cmd1="cd /mnt/HD/HD_a2/";
echo $cmd1
screen -x -S $screen_name -p 0 -X stuff $cmd1
screen -x -S $screen_name -p 0 -X stuff $'\r'
我想给名为test的screen导入“cd /mnt/HD/HD_a2/”这条命令并回车执行(这个linux版的回车符是\r,\n不执行),遇到的问题是只要$cmd1包含空格就没办法导入进screen不含空格正常,但是我用echo $cmd1是可以打印出包含空格的字符串的。想问下大家有什么办法可以解决
关于给screen导入命令的问题
-
- 帖子: 14
- 注册时间: 2020-01-08 14:43
- 系统: Linux version 3.2.40
-
- 帖子: 14
- 注册时间: 2020-01-08 14:43
- 系统: Linux version 3.2.40
Re: 关于给screen导入命令的问题
能不能用转义字符来代替“空格”?在这里应该怎么写?
- astolia
- 论坛版主
- 帖子: 6514
- 注册时间: 2008-09-18 13:11
-
- 帖子: 14
- 注册时间: 2020-01-08 14:43
- 系统: Linux version 3.2.40
Re: 关于给screen导入命令的问题
谢谢版主的回复,不是双引号的原因,我确定可以将字符串传进screen,但是不能含有空格,有空格就不行,但是下一条/r是可以继续的。我的linux是arm平台的
- astolia
- 论坛版主
- 帖子: 6514
- 注册时间: 2008-09-18 13:11
Re: 关于给screen导入命令的问题
跟arm平台有什么关系,我在树莓派上的Ubuntu 19.10试了,结果是一样的。
你自己用man screen读一下stuff的说明,stuff后面只有一个参数,所以要用双引号包起来。不用双引号的话,以你上面的例子,就变成了两个参数,在我这里会报如下错误
你自己用man screen读一下stuff的说明,stuff后面只有一个参数,所以要用双引号包起来。不用双引号的话,以你上面的例子,就变成了两个参数,在我这里会报如下错误
如果你的系统上表现不一致,可能是screen的版本不同,要么是你用的shell有问题。我这里screen版本是4.07.00 (GNU) 02-Oct-19,shell是bash 5.0.x-X: stuff: invalid option cd
-
- 帖子: 14
- 注册时间: 2020-01-08 14:43
- 系统: Linux version 3.2.40
Re: 关于给screen导入命令的问题
非常感版本还在跟进这个问题,双引号的方式我也有试过的。另外我的screen版本是4.00.03 (FAU) 23-Oct-06 shell是 4.3.29(1)-release (arm-none-linux-gnueabi)另外这个linunx把man命令精简了。
- astolia
- 论坛版主
- 帖子: 6514
- 注册时间: 2008-09-18 13:11
Re: 关于给screen导入命令的问题
显然就是个旧版本的bug,你拿新版本源码编译了放到你系统上去试试