私は現在この問題と戦っています。
私はSEに関する以前の記事を読んでおり、変数(または配列)を配置する唯一の合理的な方法は~/.profile
。何十もの大きな文字列の配列です。echo ${myarray[12]}
myarray
言葉のない値があるので、スクリプトを実行するたびに最初から生成するのではなく、一度だけビルドしたいと思います。
echo "elems = ${#myarray[@]}"
しかし、willのような簡単な確認はいつも返品0つまり、配列が不明で空です。
ところで、なぜそうなのか?私は実際に宣言された変数を期待しました。~/.profile
〜するこの環境で実行するシェルスクリプトからも入手できます。 (同じttyから来たにもかかわらず、スクリプト内に値は表示されません。)
ベストアンサー1
配列は環境変数ではないので、環境変数でもありません(そしてできない)は親プロセスの子プロセス(スクリプトなど)によって継承されます。 「スクリプトを実行するたびに[配列]を最初から新しく作成する必要があります。」これがなぜ難しいと思うのかわかりません。あなたが言ったように、値が一定であれば、必要なのはスクリプトの値をメモリに読み込むことだけです。配列を初期化するコードでスクリプトが複雑になるか心配な場合は、別のスクリプトファイルに入れてください。.
「または」source
"。
「変数(または配列)を入れる唯一の合理的な方法は」という考えをどこで得たのかわかりません~/.profile
。