庆典采摘论据
回答
pick() { read -r arg1 arg2 remainder echo first arg is $arg1 echo The remaining args are $remainder }
--edit(响应在评论质疑)
一种方式来遍历参数:
pick() { read args; set $args; while test $# -ne 0; do echo $1 shift done }
在循环的每个迭代,$ 1指的是一个参数。
如何读取所有参数,因为cuz我可以有10个参数或更多? –
如果你有10个或更多的参数 - 你做错了什么。 –
您是否在寻找xargs?
如果我没有弄错,OP希望我做同样的事情:你给它一个字符串,如果字符串包含多个{words,lines},它会给你一个菜单,然后你选择一个,然后它返回你在stdout上选择的那个。
如果只有一个项目,它只是返回它。
这对于 - 使用我的特殊用例 - 日志文件查看器脚本很有用:您给它一个文件名的子字符串,并通过find /var/log -name \*$arg\* -print
来查看它可以找到的内容。如果它获得了独一无二的命中,它会将它传回到您的脚本,该脚本的运行较少。如果它不止一次点击,它会显示一个菜单,并让你选择一个。
ISTR KSH对此有一个内建的,但我并没有对它印象深刻;我不记得bash是否有一个。
我在这里是因为我在寻找是否有人在我自己写之前写过它。 :-)
UPDATE:Nope;我自己写的:
下面是一些示例代码:
在/ usr/local/bin目录/味精:
PATH=$PATH:/usr/local/bin
[ $UID = 0 ] || exec sudo su root -c "$0 $*"
FILE=/var/log/messages
[ $# -eq 1 ] &&
FILE=`find /var/log/ -name \*$1\* -print |
egrep -v '2011|.[0-9]$' |
pick`
echo "$FILE"
less +F $FILE
由于我管道名称不太+ FI想用grep出来存档日志文件;这是用于交互式日志查看。
在/ usr/local/bin目录/送:
# Present the user a bash Select menu, and let them pick
# Try to be smart about multi-line responses
# must take input on stdin if it might be multiline
# get multiline input from stdin
while read LINE </dev/stdin
do
CHOICES+=($LINE)
done
# add on anything specified as arguments
while [ $# -gt 0 ]
do
CHOICES+=($1)
shift
done
# if only one thing to pick, just pick it
if [ ${#CHOICES[*]} -eq 1 ]
then
echo $CHOICES
exit
fi
# eval set $CHOICES
select CHOSEN in ${CHOICES[@]}
do
echo $CHOSEN
exit
done </dev/tty
- 1. 庆典
- 2. 庆典:*
- 3. #!/斌/庆典--login VS#!/斌/庆典
- 4. 通过庆典
- 5. 用awk庆典
- 6. 在庆典
- 7. 从庆典
- 8. 庆典模板
- 9. 杀从庆典
- 10. 防止庆典
- 11. 从庆典
- 12. 采摘热键
- 13. Ray gluingProject()采摘
- 14. 3D采摘lwjgl
- 15. 如何从庆典
- 16. 庆典:在可变
- 17. 复制在庆典
- 18. 庆典arobase包串
- 19. 我在采摘吗?
- 20. OpenTK鼠标采摘
- 21. LWJGL的3D采摘
- 22. 导轨不采摘会话数据
- 23. 庆典:找到解释
- 24. 有自己的子庆典
- 25. 庆典,问题与循环
- 26. blogdown :: NEW_SITE()庆典上WIN7
- 27. 庆典合并多行
- 28. 庆典线迭代脚本
- 29. 防止别名 - 庆典
- 30. 如何读取庆典
应该'pick'试图获得的参数'echo'持有? (即使'echo'被其他命令所取代?) – aioobe
是的,我认为只应该采取参数回声 –