Bash
傳遞參數以在孫程序中使用
我有一個參數列表和三個過程:
bash_script -> child -> grandchild
參數列表是針對孫子的。我可以修改所有三個過程。祖父腳本自己有一個參數。
以下是將剩餘參數傳遞給孫子的正確方法嗎?
#!/usr/bin/env bash # This is the grandfather first_arg="$1" shift 1; export MY_ARGS="$@"
我稍後在子程序中“傳播” env 變數,作為呼叫孫子的命令的一部分,例如:
grandchild --foo "$MY_ARGS" # append $MY_ARGS as arguments to foo
在腳本中,不應將數組降級為字元串。環境變數及其值是一個簡單的
key=value
對,其中key
和value
都是字元串。將位置參數降級為一個簡單的字元串(通過連接)將難以保持它們之間的分隔,並且當您最終想要使用它們時很難正確引用它們。相反,將要傳遞給其命令行上的下一個腳本的位置參數(命令行參數)。
#!/bin/bash first_arg=$1 shift # later ... ./my_other_script "$@"
在另一個腳本中:
#!/bin/bash # use "$@" here foo --bar "$@"