関数の外側の変数は、ローカル変数でなくてもアクセスできません。

関数の外側の変数は、ローカル変数でなくてもアクセスできません。

単純なbashスクリプトがあります。私のバッシュバージョンはGNU bash, version 4.4.20(1)-release (x86_64-redhat-linux-gnu)

#!/bin/bash
  
func() {
    nlvar="i'm not local variable"
    local lvar="i'm local variable"
}
echo $nlvar
echo $lvar

私が使うなら

eval nlvar="i'm not local variable"

または

export nlvar="i'm not local variable"

まだ応答がありません

答え1

関数を呼び出さないと、グローバル(未定義)範囲を除いて範囲はありません。

#!/bin/bash
  
func() { :; }    # define a function

echo $nlvar
echo $lvar

関数を定義しても実行されないため、文の実行時に両方のecho変数は設定されません。

関連情報