我正在尝试使用一个非常小的bash脚本将命令传递到Linux中的分离屏幕
目前屏幕已分离,我可以使用下面的bash脚本将命令发送到屏幕。
#!/bin/bash
COMMAND=$1;
screen -S "detachedscreen" -X stuff $COMMAND`echo -ne '\015'`
当论证超过1个单词时会出现问题。
在参数周围添加单引号或双引号并不能解决问题。
当多个单词参数发送到分离的屏幕时,会抛出以下错误。
-X: STUFF: invalid option firstArgument
如何在不抛出此错误的情况下向bash发送多个单词参数?
答案 0 :(得分:2)
你的问题很模糊,但听起来你的论点应该被恰当地分开。如果它们是shell命令,则可以使用分号和换行符。如果接收程序需要换行分隔输入,那么首先,您需要在脚本中正确引用:
#!/bin/bash
COMMAND=$1;
screen -S "detachedscreen" -X stuff "$COMMAND"`echo -ne '\015'`
也可能被重构为接受多个参数:
#!/bin/bash
screen -S "detachedscreen" -X stuff "$@"$'\015'
当然,您需要传递换行符分隔的命令,例如
yourscript "hello
buy
more
beans"
如果您希望脚本始终在参数之间粘贴换行符,那么您可以说
yourscript hello buy more beans
你也可以做到这一点:
#!/bin/bash
commands=$(printf '%s\n' "$@")
screen -S "detachedscreen" -X stuff "$commands"$'\015'
如果每个命令都有一个DOS回车符,请尝试
#!/bin/bash
commands=$(printf '%s\r\n' "$@")
screen -S "detachedscreen" -X stuff "$commands"
现在,如果你想要一个包含空格的字符串,只需引用它
yourcommand hello "buy more beans"
会在一行发送hello
,然后发送buy more beans
。