GNU/Linux >> Linux の 問題 >  >> Linux

特定の変数を調達する方法

関数を使用して変数のスコープを設定することができます。例:

## Provider.sh
# Global vars
declare -A map

# Wrap the rest of Provider.sh in a function

provider() {

    # Local vars only available in this function
    declare a=hello b=world c d


    # Global vars are available
    map[hello]=world

}

provider "[email protected]"    # Execute function, pass on any positional parameters

# Remove function
unset -f provider
$ cat Consumer.sh
. ./Provider.sh
echo "${map[hello]}"
echo "$a"
$ bash -x Consumer.sh
+ . ./Provider.sh
++ declare -A map
++ provider
++ declare a=hello b=world c d
++ map[hello]=world
++ unset -f provider
+ echo world
world
+ echo ''


関数を使用して、変数をローカルまたはグローバルにすることができます:

#!/bin/bash

foo() {
  declare -gA MAP # make global
  local A=hello # make local
  local B=world # make local
  MAP[hello]=world
}

foo

次に:

#!/bin/bash
source ./Provider.sh
[[ -z "$A" ]] && echo "Variable A not defined"
[[ -z "$B" ]] && echo "Variable B not defined"
echo ${MAP[hello]}

出力:

Variable A not defined
Variable B not defined
world

Linux
  1. 変数に格納されているコマンドを実行するにはどうすればよいですか?

  2. 「if」ステートメントに変数が存在するかどうかを確認するにはどうすればよいですか?

  3. 変数の拡張を延期する方法は?

  1. 特定のディレクトリにSSHで接続する方法は?

  2. Linuxで$Path変数を設定する方法

  3. 単一のファイルを RSYNC するには?

  1. Linuxコマンドの出力を変数に割り当てる方法

  2. 間接変数評価を行う方法は?

  3. 特定のサブネット (ソース IP) のみを特定のインターフェイスにルーティングする方法は?