在从列表中读取值并将其作为输入写入下一个命令时需要一些帮助。
我需要编写一个需要
的shell脚本 v1.0
v2.0
v3.0
v4.0
---列出所有标签或版本号,如:
read v3.0
我需要读取列表输出中的一个值,例如v3.0并将其传递给下一个命令
git checkout <version number>
git checkout v3.0
示例:{{1}} 我如何在shell脚本中实现它?请帮忙
答案 0 :(得分:0)
阅读你的上一条评论,我认为@fedorqui是对的。这个问题是重复的:你想建立一个菜单并提示用户。在您的情况下,您应该使用options=( $(git tag -l) )
。
List options in menu in bash处的脚本变为:
#!/bin/bash
prompt="Please select a file:"
options=( $(git tag -l) )
PS3="$prompt "
select opt in "${options[@]}" "Quit" ; do
if (( REPLY == 1 + ${#options[@]} )) ; then
exit
elif (( REPLY > 0 && REPLY <= ${#options[@]} )) ; then
echo "You picked $opt which is file $REPLY"
break
else
echo "Invalid option. Try another one."
fi
done
git checkout $opt
历史的第一个答案。
您要查找的命令是xargs
:
git tag -l | fgrep v3.0 | xargs -I xxx git checkout xxx
我必须提醒您,如果多个标记包含v3.0
,那么git checkout
将被执行多次。