gpt4 book ai didi

linux - 如何在 linux 脚本中更改函数参数的值?

转载 作者:太空狗 更新时间:2023-10-29 11:04:32 24 4
gpt4 key购买 nike

我有一个用不同参数调用的脚本。根据这些参数的值,我检查并构建项目的“参数”SVN 版本。

./deploy 3281 

此命令将创建一个 3281 目录并检查项目的 3281 SVN 版本,并将在 3281 目录中构建它。

我需要创建一个关键字“HEAD”,这样脚本将检查最新的 SVN 修订号并为其创建一个文件夹(例如:3282),然后检查项目的 head 版本并在那里构建它。

我找到了如何使用 svn ( svn info -r 'HEAD' --username jse http://jse@svn.ctsvpn.com/repos/Teleena/ | grep Revision | egrep -o "[0-9]+") 获取最新修订号,我正在尝试简单地实现一个 if 是这样的:

 #check to see if latest/head revision is called
if [ "$1" == "head" ]; then
#get latest revision number
HEADREV=$(svn info -r 'HEAD' --username jse http://jse@svn.ctsvpn.com/repos/Teleena/ | grep Revision | egrep -o "[0-9]+")
echo "=========================================="
echo "= Revision number: $HEADREV will be used ="
echo "=========================================="
#change swap the second parameter
$1=$HEADREV #<-- IS THIS CORRECT?
fi
...[rest of program here]

我想用最新的修订号替换第一个参数,并保持脚本的其余部分不变。所以问题是:如何从函数内部更改函数的参数值?

最佳答案

您可以使用 set内置以更改位置参数。

以下代码片段将第一个位置参数(即 $1)更改为 something:

set -- "something" "${@:2}"

例如,引用以下内容:

echo "Original parameters: $@"
set -- "something" "${@:2}"
echo "Modified parameters: $@"

假设它被放置在一个名为 script 的脚本中,并通过 bash script foo bar baz 调用,它会输出:

Original parameters: foo bar baz
Modified parameters: something bar baz

引用自 help set:

set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

 Set or unset values of shell options and positional parameters.

关于linux - 如何在 linux 脚本中更改函数参数的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com