假设我使用名为customcmd
的命令创建了自己的bash脚本我想要它,这样如果我在终端中键入customcmd,其后面的每个后续命令也将执行customcmd
所以假设我这样做
>customcmd
>param1
>param2
>param3
我希望这相当于
>customcmd
>customcmd param1
>customcmd param2
>customcmd param3
即。我希望它是这样的,通过执行customcmd一次,我将不必再次输入customcmd并且我想让命令行解析我之后键入的每个命令,以自动成为customcmd的参数......
在编写bash脚本时如何实现这一目标?
答案 0 :(得分:3)
如果我理解你的问题,我会做以下事情:
创建一个脚本,例如 mycommand.sh:
#!/bin/bash
while [[ 1 ]]; do
read _INPUT
echo $_INPUT
done
希望有所帮助!
答案 1 :(得分:0)
这可能是您的表格之一。
#!/bin/bash
shopt -s extglob
function customcmd {
# Do something with "$@".
echo "$*"
}
while read -er INPUT -p ">" && [[ $INPUT != *([[:blank:]]) ]]; do
if [[ $INPUT == customcmd ]]; then
customcmd
while read -er INPUT -p ">" && [[ $INPUT != *([[:blank:]]) ]]; do
customcmd "$INPUT"
done
fi
done
或者这个:
#!/bin/bash
shopt -s extglob
function customcmd {
if [[ $# -gt 0 ]]; then
# Do something with "$@".
echo "$*"
else
local INPUT
while read -er INPUT -p ">" && [[ $INPUT != *([[:blank:]]) ]]; do
customcmd "$INPUT"
done
fi
}
while read -era INPUT -p ">" && [[ $INPUT != *([[:blank:]]) ]]; do
case "$INPUT" in
customcmd)
customcmd "${INPUT[@]:2}"
;;
# ...
esac
done
**在数组$INPUT
中相当于${INPUT[0]}
,虽然其他人不同意使用前者,因为它不那么“文档化”,但是每个工具都有他们自己传统上接受的黑客,同样的人会允许就像Awk中的那些黑客一样,而不是任何一个Wiki或者他认为是更老练的Bash用户可以决定哪个应该是标准的。