• ベストアンサー

標準入力からシェル変数及び環境変数に値を設定する(bash)

標準入力からシェル変数及び環境変数に値を設定する方法で、cshの場合は「set 変数=$<」ということは確認しているのですが、bashの場合はどのようにすればよろしいのでしょうか?ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

普通はreadを使います。readの完了値でEOFも判断できるのがcshの$<に比べた時の利点です。例えば、 while read a do echo "$a" done < file で、cat file と同じことが出来ます。 aを環境変数にしたければexport aするのは普通のシェル変数と同じ。 あと、cshでのset 変数=$< ですが入力行に空白があると意図しない結果になるので、"$<" とした方がいいです。 sh/bash の read だと、read a b c のように空白(正確には$IFSの値のどれか)で区切られた複数のデータを詠むことも出来ます。詳しくは、man bash に書いてあります。

maiko100
質問者

お礼

簡単な内容にかかわらず、ご返答いただき有難うございました。早速動作確認しました。

その他の回答 (1)

  • galoon
  • ベストアンサー率28% (38/133)
回答No.1

read コマンドが割と有名だと思います。 ex) ENV1という変数に入力データを設定したい場合 $ read ENV1 abcde $ echo $ENV1 abcde

maiko100
質問者

お礼

単純な質問にもかかわらず、ご返答いただき有難うございました。早速動作確認しました。

関連するQ&A

  • bashシェルスクリプトで変数を使う

    bashシェルスクリプト内で変数を使いたいです。 Linux内の設定ファイルを参考に、 ・変数名=その内容、で設定 ・${変数名} 、で呼び出す だと判断し、以下のように使っています。 #!/bin/bash WORK=/home/aaa/ cd ${WORK} その後検索したところ、 「呼び出すには、$変数名 のように記述する」との説明を見かけ、 実際$の後に変数名を付けるだけでも認識したのですが、 { }は付けても付けなくてもよいのでしょうか。 { }が必要な場合もあるのでしょうか。

  • CSHの環境変数の設定

    CSHで外部で定義したconfigファイルから変数を読み込み そのシェル及び子シェル内で有効な変数として使用したのですが どのような方法がありますでしょうか? 以下の方法だと親シェルからでは子シェルで設定した変数が読み込めないため困っています。 config.csh #!/bin/csh -f setenv AAA aaa test.csh #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" echo $AAA

  • シェルによる環境変数の設定方法

    シェルによる環境変数の設定方法に関して質問があります。 ・二つのシェルファイルA.shとB.shがあります。 ・A.shの中でexportを使って環境変数を設定しています。 ・B.shの中でA.shを呼んでいます。 この場合、B.shを実行したコンソールにはA.shで設定した環境変数が設定されません。 B.shを実行したコンソールに別ファイルA.shが設定した環境変数を設定するには どのようにすればよいのでしょうか? 分かる方がいたら教えて下さい。宜しくお願い致します。

  • 『存在するかどうか分からない』環境変数にcshで新しいパスを設定したい

    Linuxを利用しており、「『存在するかどうか分からない』環境変数に新しいパスを設定したい」のですが、うまくいきません。 言い方を変えると、対象の環境変数が存在しようが存在しまいが、うまくいくようにしたいのです。 具体的には、ログインシェルに tcsh を使用しているため、hogehoge.cshを作成し、/etc/csh/login.d/に入れました。hogehoge.cshの内容は以下のようになります。 #!/bin/csh setenv HOGEHOGEPATH /usr/lib/hogehoge:${HOGEHOGEPATH} ログインしてみると HOGEHOGEPATH: Undefined variable. といった内容のエラーが表示され、環境変数も設定されません。 shで設定する方法もありますがcshで良い書き方はないでしょうか。ご教示お願いいたします。

  • bシェルでシェル変数に変数に代入されている値の個数

    bシェル(Bourneシェル)で、シェル変数に変数に代入されている 値の個数を知りたいのですが、できるのでしょうか。 ----- #!/bin/sh A="1 2 3 4 5" echo $A 変数Aには、半角スペース区切りで、「1 2 3 4 5」と5個の値が 代入されています。 この設定されている値の個数、5を求めたいのですが、 どうすればよいのでしょうか。 Solaris8 Bシェル です。

  • 環境変数について

    OSはRedHatLinux9、シェルはbashを使っているのですが、環境変数(パスの設定)はどこのファイルに書くのが一般的なのでしょうか? それぞれのユーザのホームディレクトリでls -aとしたら、.bash_profile、.bashrcがあり、/etcにはprofileがあります。 最近は、.bash_profileにパスを設定するのですが、あまり他のファイルに書くのと何が違うのかわからずに書き込んでいます。できれば、その違いまで教えていただければ幸いです。よろしくいお願いします。

  • bashのexportによる環境変数設定に関して教えてくださいませ。

    bashのexportによる環境変数設定に関して教えてくださいませ。 複数のファイルに記述している環境変数設定を まとめて実行したい場合はどのようにすればよいでしょうか。 例えば、 ◆hogeファイルの内容 export AAA=aaa soruce ./piyo ◆piyoファイルの内容 export BBB=bbb この状態で、 source hoge とすると、 AAA=aaaは設定されているのですが、 BBB=bbbは設定されないようです。 source の中からsource の記述はできないのでしょうか? source ./piyo 部分を ./piyo にしてもダメでした。

  • sh及びbash環境

    こんにちは。 主題の件について教えて下さい。 当方、shやbash環境は初めてのものです。 今までcshやtcshを使っていました。 よって、今の環境には不慣れであり、色々教えて下さい。 質問(1) コンソール(ターミナル)を起動した時、変なディレクトリがデフォルトになっています。 この起動時ディレクトリを編集する方法を教えて頂けますでしょうか? 質問(2) viエディタで日本語を入力したいのですが 何をインストールすれば日本語入力が可能になりますでしょうか? 質問(3) cshやtcsh環境にすることも可能なのでしょうか? 以上、宜しくお願いします。

  • コマンドプロンプトの環境変数

    『コントロールパネル』→『システム』→『システムのプロパティ』→『詳細』タブ→『環境変数』→『システム環境変数』で設定した環境変数が、 "C:\WinNT\System32\CMD.EXE"を起動して、 "SET"コマンドで環境変数を確認すると設定された値と違っています。 何故でしょうか?

  • Perl変数から外部プログラムの標準入力へ

    Perlのプログラム内部で保持している変数の値をシェルコマンドに与える方法はありますか? $value=12345; や、 @array=('ONE', 'TWO', 'THREE'); などの変数の値を外部コマンド(標準入力を受けることができるコマンド)に渡したいのです。 方法がわからないので、現在は一度ファイルに書き出して、 system('cat file.name | command'); のようにして渡しています。なんか賢くない書き方のような気がするのですが。

    • ベストアンサー
    • Perl