我想将版本标记参数(如 v1.3)传递给 bash 脚本文件。我展示了包含标签参数的文件。我想${tag}
从终端传递 v1.3 参数。该标签值经常更改。谁能告诉我如何传递下面的 bash 脚本文件的参数。
#!/bin/bash
cd /path/to/file
git checkout -- .
git checkout tags/${tag}
答案1
您可以使用所谓的“位置参数”,$1
等等$2
。
例如
#!/bin/bash
cd /path/to/file
git checkout -- .
git checkout tags/"$1"
现在您可以执行myscript tag
or myscript anothertag
or 操作myscript test
,并且 的值$1
将是您输入的内容。
答案2
通过添加一行,您的脚本可以按照您想要的方式工作:
#!/bin/bash
tag=$1
cd /path/to/file
git checkout -- .
git checkout tags/${tag}
这将采用脚本的第一个命令行参数并将其分配给变量tag
。
为了允许 的值中存在空格$tag
,请用双引号引用变量扩展:
#!/bin/bash
tag=$1
cd /path/to/file
git checkout -- .
git checkout tags/"$tag"
要仅在成功git
时执行操作cd
,请使每个命令都依赖于前一个命令的成功完成:
#!/bin/bash
tag=$1
cd /path/to/file &&
git checkout -- . &&
git checkout tags/"$tag"
或者,让脚本在其中一个命令失败时自动终止,
#!/bin/bash -e
tag=$1
cd /path/to/file
git checkout -- .
git checkout tags/"$tag"
由于此脚本没有使用任何bash
特定的内容,因此它可以轻松地在以下环境下运行/bin/sh
:
#!/bin/sh -e
tag=$1
cd /path/to/file
git checkout -- .
git checkout tags/"$tag"
答案3
您可以使用位置参数将参数传递给脚本
#!/bin/bash
cd /path/to/file
TAG=$1 # read the first paramater passed to your script like ./myscript v1.2
if [ "$TAG" != "" ]; then
git checkout -- .
git checkout tags/"$TAG"
else
echo "Please enter a Tag "
exit 1 ;
fi
您还可以使用交互模式来允许用户向您的脚本输入值,例如 .
#!/bin/bash
read -p "Please enter tag: " TAG
cd /path/to/file
if [ -n "$TAG" ]; then
git checkout -- .
git checkout tags/"$TAG"
else
echo "Please run again and enter a Tag "
exit 1 ;
fi