这可能是您的一种形式。
#!/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]}
,尽管其他人不同意使用前者,因为它的“文档性”较少,但每个工具都有自己传统上接受的 hack,就像 Awk 中的那些 hack,而不是任何 Wiki 或他谁认为是更资深的 Bash 用户可以决定哪个应该是标准的。