微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从bash调用时,屏幕转义不同

我有一个名为ROBUST的长时间运行的服务器进程,它有一个控制台.我们在一个屏幕上运行它并附加到手动操作服务器(它是一个虚拟世界服务器).

我有一个偶尔需要添加用户的网络应用程序(在prolog中). ROBUST有几个编程接口,由于各种原因都很尴尬.所以我想尝试一下
shell out,用-X附加一个屏幕,并进行等效的输入

创建用户SomeUser SomeName SomePass somebody@somewhere.com
新队

在控制台上.这条线

屏幕-S ROBUST -p 0 -X评估’东西’创建用户SomeUser SomeName SomePass somebody@somewhere.com ^ M“’

作品

但是当我把它放在这个bash脚本中时

#!/bin/bash
screen -S ROBUST -p 0 -X eval 'stuff "create user $1 $2 $3 $4 ^M"'

它没有.
使用另一个终端连接到ROBUST控制台并观看,它认为该行以创建用户结束

我已经尝试了我能想到的每个方案来逃避各种单引号和双引号,但此时我很难过.

后来评论

我通过弄清楚prolog process_create语法来解决对bash脚本的需求

?- process_create(path(screen),['-S','ROBUST','-p','0','-X',eval,'stuff "create user Manny Muncher somepass somebody@uh.edu^M"'],[]).

解决方法

screen -S ROBUST -p 0 -X eval 'stuff "create user $1 $2 $3 $4 ^M"'

字符串不会在”内扩展.你必须使用“”来bash扩展1美元等.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐