Bash 将空命令行传递给源';d脚本

Bash 将空命令行传递给源';d脚本,bash,command-line,Bash,Command Line,我的bash脚本需要我毫无问题地解析的命令行参数。但是,该脚本稍后会调用另一个脚本,该脚本也接受位置参数,但不强制提供参数 当我的脚本sources没有参数的另一个脚本时,另一个脚本仍然尝试解析那些首先提供给我的脚本的参数 我有两种解决方案,但在我看来没有一个是好的 使用shift键: #现在制作此脚本来处理分支: OPTIND=1 而getopts“b:”opt;做 案例“$opt”加入 “b”)分支机构=$OPTARG;; 以撒 转移 完成 将空参数传递给第二个脚本: source${MI

我的bash脚本需要我毫无问题地解析的命令行参数。但是,该脚本稍后会调用另一个脚本,该脚本也接受位置参数,但不强制提供参数

当我的脚本
source
s没有参数的另一个脚本时,另一个脚本仍然尝试解析那些首先提供给我的脚本的参数

我有两种解决方案,但在我看来没有一个是好的

  • 使用
    shift键

    #现在制作此脚本来处理分支:
    OPTIND=1
    而getopts“b:”opt;做
    案例“$opt”加入
    “b”)分支机构=$OPTARG;;
    以撒
    转移
    完成
    
  • 将空参数传递给第二个脚本:

    source${MINICONDA}/bin/activate“”
    

  • 请注意,对于作为外部进程的脚本的正常调用,这不是必需的,但仅适用于使用
    源代码
    进行的调用

    要向读者提供上下文,请从bash的内置帮助到
    源代码

    如果提供了任何参数,则在执行文件名时,这些参数将成为位置参数。否则,位置参数将保持不变


    控制参数列表的最简单方法是使用
    set--arg1 arg2…
    立即用新列表覆盖它。因此:

    orig_args=( "$@" )        # back up the original arguments
    set --                    # clear the argument list
    
    source whatever
    
    set -- "${orig_args[@]}"  # if you ever need them back
    

    shift$#
    将是一种方式,或者更简单地说,
    set--
    。感谢您的回答和描述!