次のような非常に単純なスクリプトがあります。
#!/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