gpt4 book ai didi

bash - 不为源脚本提供参数

转载 作者:行者123 更新时间:2023-12-04 13:46:46 24 4
gpt4 key购买 nike

我有一个可以“配置”的 bash 脚本,因为它获取位于第一个参数的文件。现在我想将所有其他参数作为参数传递给源脚本。当我传递参数时,一切都如我所料。但是当我不传递参数时,取而代之的是来自外部脚本的参数。

假设我有以下两个脚本:

外部文件

#!/bin/bash

echo ${@}
MYARGS=${@:2}
echo $MYARGS

. inner.sh $MYARGS

内部文件
echo "inner arguments: $@"
echo "first: $1"

命令行上的结果:
$ ./outer.sh one two #this is what I expected
one two
two
inner arguments: two
first: two

$ ./outer.sh one #this is what puzzles me
one

inner arguments: one
first: one

第一次调用我的脚本的结果正是我所期望的,因为我提供了参数 two .但是第二次调用显示了我想要实现的目标:我没有将任何参数传递给脚本。

是否有任何解决方案,不需要我更改外部脚本中变量的值?

最佳答案

保存当前的参数集以便稍后恢复,然后在采购之前修改该集inner.sh .

#!/bin/bash

current_args=( "$@" )
set -- "${@:2}" # Configure arguments for inner.sh
. inner.sh
set -- "${current_args[@]}" # Restore arguments for outer.sh

关于bash - 不为源脚本提供参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33654057/

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