了解内置读取

了解内置读取

我正在尝试编写一个简单的 shell 脚本来使用 urxvt 启动命令。想法是这样的(不是完整的脚本,只是想法):

PRMPT="read -r CMD"
urxvt -g 55x6-20+20 -e $PRMPT
CMD

该脚本有两个问题。第一个是read不适合此类任务,因为它会忽略命令的选项(如果我写echo helloread 将分配echoCMD并忽略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

相关内容