加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 20:58:57 所属栏目:安全 来源:网络整理
导读:我有一个名为ROBUST的长时间运行的服务器进程,它有一个控制台.我们在一个屏幕上运行它并附加到手动操作服务器(它是一个虚拟世界服务器). 我有一个偶尔需要添加用户的网络应用程序(在prolog中). ROBUST有几个编程接口,由于各种原因都很尴尬.所以我想尝试一下
我有一个名为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美元等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读