将参数传递给 bash 脚本文件

将参数传递给 bash 脚本文件

我想将版本标记参数(如 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

相关内容