我正在尝试编写一个简单的 shell 脚本来使用 urxvt 启动命令。想法是这样的(不是完整的脚本,只是想法):
PRMPT="read -r CMD"
urxvt -g 55x6-20+20 -e $PRMPT
CMD
该脚本有两个问题。第一个是read
不适合此类任务,因为它会忽略命令的选项(如果我写echo hello
read 将分配echo
给CMD
并忽略hello
)。第二个,也是最让我困惑的一个,是urxvt -e
立即退出,不等待我的输入。我认为这与内置函数有关read
,但例如urxvt -e echo hello
工作正常。
有人对如何更改脚本有任何建议吗?
答案1
你的目标是什么? echo 是可执行的 ( /bin/echo
),read 是内置的。 -e 表示执行可执行文件。如果你想使用 shell 的内置函数(bash?)使用urxvt -e /bin/bash -c read -r CMD
答案2
我不知道urxvt
,但可以帮助你read
。
当你使用read
这种方式时:
read -r CMD
它分配第一个代币它读取变量CMD
。如果你想读取更多的标记,你可以显式地声明更多的变量。
read -r CMD ARGS1 ARG2 ARG3
在这种情况下,如果标记的数量多于应分配的变量的数量,则最后一个变量将采用直观上应有的内容加上读取的其余标记。
您还可以通过添加选项来使用数组-a
。
read -ra CMD
要扩展数组,请执行以下操作:
"${CMD[@]}"
插图。
$ read -a cmd
echo ok
$ ${cmd[@]}
ok