キーボード入力を読み取り、それをローカル変数に割り当てるにはどうすればよいですか?

キーボード入力を読み取り、それをローカル変数に割り当てるにはどうすればよいですか?

次のような非常に単純なスクリプトがあります。

#!/bin/bash

read local _test
echo "_test: $_test"

これが出力です。

$ ./jltest.sh
sdfsdfs
_test: 

_test変数が単にローカル変数であることを望みます。可能ですか?

答え1

ローカルの組み込み機能は関数内でのみ機能します。スクリプトに設定されているすべての変数は、明示的に記載されていない限り、すでにスクリプトに「ローカル」ですexport。したがって、削除すると期待どおりに動作します。

#!/bin/bash

read _test
echo "_test: $_test"

または関数に置き換えることもできます。

my_read () {
  local _test
  read _test
  echo "_test: $_test"
}

関数の内部でも、local組み込み関数は作成したとおりに機能しません。


あなたのコードは実際には次の名前の変数を設定しますlocal

#!/bin/bash

read local _test
echo "_test: $_test"
echo "local: $local"

$ ./script.sh
sssss aaaaa
_test: aaaaa
local: sssss

関連情報