• 受付
  • すぐに回答を!

Windows バッチを Linux へ移植したい

  • 質問No.9701608
  • 閲覧数70
  • ありがとう数4
  • 気になる数0
  • 回答数2

お礼率 100% (2/2)

FOR 文を使ってテキストファイルの中身を変数に格納するバッチファイルがあります。

FOR /F "tokens=1,2* delims==" %%i IN (test.txt) DO SET %%i=%%j

[読み込む test.txt の内容]
HOGE=A
FUGA=B
HAGE=C

実行すると、%HOGE% には A、%FUGA% には B、%HAGE% には C が代入されます。

これと同じ処理を Linux のシェルスクリプト(bash)で実現するにはどうすれば良いでしょうか。
while read ~ でやるのかなと思ったのですが、変数の処理がピンと来なくて困っています。
どうかご教授ください。

回答 (全2件)

  • 回答No.2

ベストアンサー率 28% (1379/4873)

「変数」というのがシェル変数なのでしたら、#1の方が書かれているように
. ./test.txt
もしくはシェルがbashということなので
source ./test.txt
でよろしいかと思います。
お礼コメント
stdnek

お礼率 100% (2/2)

wormhole さん;
有難うございます!大変参考になりました!
投稿日時:2020/01/15 10:28
  • 回答No.1

ベストアンサー率 61% (264/426)

何か書いてない要件があるのかもしれんが
. ./test.txt
じゃ駄目なの?

あえて read するなら eval 使えば
while IFS= read a; do eval "$a"; done < ./test.txt

= でセパレートしたいなら
while IFS=\= read a b; do eval "$a='$b'"; done < ./test.txt
お礼コメント
stdnek

お礼率 100% (2/2)

trapezium さん;

有難うございます!単にテキストファイルをソースとして読み込めばよかったのですね。
勉強になりました!
投稿日時:2020/01/15 10:27
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ