コンソールを備えた、ROBUST と呼ばれる長期実行サーバー プロセスがあります。画面で実行し、接続してサーバーを手動で操作します (仮想世界のサーバーです)。
ときどきユーザーを追加する必要がある Web アプリ (プロローグ) があります。ROBUST には、さまざまな理由で扱いにくいプログラム インターフェイスがいくつかあります。だから私はただ殻をむき出し、-Xで画面を接続し、入力と同等のことをしようとしています
ユーザー作成 SomeUser SomeName SomePass someone@somewhere.com 改行
コンソールで。この行
screen -S ROBUST -p 0 -X eval 'stuff "create user 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 コンソールに接続して見てみると、 create user で回線が終了していると思います。
さまざまな一重引用符と二重引用符をエスケープするために考えられるすべてのスキームを試しましたが、この時点で困惑しています。
後のコメント:
プロローグの process_create 構文を理解することで、bash スクリプトの必要性を回避しました。
?- process_create(path(screen), ['-S', 'ROBUST', '-p', '0', '-X', eval, 'stuff "create user Manny Muncher somepass somebody@uh.edu^M"'], []).