エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など

      2020/06/05

Linuxの bashで変数に値を代入、追記する方法の解説

 

環境変数「PATH」にパスを追記する方法

 
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説」の記事で、Linuxの変数を扱う方法と、環境変数「PATH」に値を追加する方法の基本的な手続き方法について解説を行いました。
 
 
環境変数「PATH」に値を追加することを想定して解説をしてきましたので、「PATH」にパスを追加する場合は下記の方法を紹介しました。
 

 
 
環境変数「PATH」の場合は、区切り文字(デリミタ)が「:(コロン)」ですので、上記のように変数名の後ろに「:」をおいて追加する値を記述する方法を採ることができます。
 
 
では、例えば「HENSU1」に「xyz」という文字列を区切り文字なしに追記したい場合はどうすればいいのでしょうか?
 
その方法について解説を行います。
 
 

Linuxのbashで変数に値を追加する方法

 
まずは、変数として「HENSU1」に「abc」という値を入れます。
これ以降は、この「HENSU1=abc」の状態の変数「HENSU1」に値を追記する処理として解説します。
 

 
 
上記の状態に対して、環境変数「PATH」と同じ様に区切り文字「:(コロン)」をおいて、値を追加することが可能です。
 

 
この場合、区切り文字として「:」を使う変数の場合は全く問題ありませんが、「abcxyz」のように区切り文字を使いたくない場合は対応ができません。
 
 

 
上記のように記述すると「HENSU1xyz」全体で変数名ととらえられてしまうため、「HENSU1」の中身は空になってしまいます。(変数「HENSU1xyz」はそれ以前に定義されていないとします。)
 
 
そこで、この状況を回避するために下記の 2つの方法を採ることができます。
 

 

 
前者は、「Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説」の記事で触れていますが、変数に値を代入する際に値を「’」「”」で囲み、値の範囲を明確化する方法があります。
これを利用し、変数「HENSU1」と値「xyz」を分けて表現することができます。
 

 
この方法を利用すると、上記のように「abc」のあとにスペースを入れて「xyz」を追記したい場合にも簡単に応用することができます。
 
 
後者は、PHPでも同じ様な記述の方法がありますので、こちらの方がなじみがある方も多いかと思いますが「+=」を使って代入する方法です。(PHPの場合は、文字列の追記ではなく、値の四則演算に使うものですが。)
 
 

 
また、「+=」とクォートで値を囲む処理を組み合わせることもできます。
 
 
ちなみに、わざわざ下記の様な記述をする方はいないと思いますが、変数と値の境界が分かればいいので、下記の様に「”(ダブルクォート)」「’(シングルクォート)」を 2つつなげて書いて、そこが区切りであることを明示する方法も可能ではあります。
 

 
 
また、ダブルクォートで囲めば値として処理されますので、スペースを区切り文字として使いたい場合は、上記のような記述方法も可能です。
 
 

 
 

区切り文字は多様な文字を使うことができる

 
環境変数「PATH」では区切り文字(デリミタ)として「:(コロン)」を使っていますので、「PATH=$PATH:/home/bin」のように「:」を変数と値の区切り文字として使っています。
 
ですが、区切り文字として使える文字は「:」だけではありません。
 

 
例えば、上記のように「+」を使うこともできます。
 
 
他にも下記の文字を区切り文字として使うことができます。
 

 
 

区切り文字として使えない文字もある

 
対して、下記の様に、コマンドとして入力する際に意味を持つ記号は使うことができません。
 

 
「_(アンダースコア)」は変数名として利用できる記号ですので、「HENSU1_123」で一つの変数として認識されるため、「HENSU1」は空になります。
 
 

 
「!(エクスクラメーションマーク)」は、その後に数値を記述した場合は、実行したコマンドの履歴の中からその数値の順番に実行したコマンドを実行します。
上記の例では「123番目」のコマンドはすでに履歴からなくなっていましたので、「not found」となっています。
 
コマンドの履歴に関しては「Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する」を参照してください。
 
 

 
「$(ドルマーク)」は、「$HENSU1」でも使っていますが、変数名を表す記号ですので、上記の例では「$1」が変数名として認識されています。
 
 

 
「&(アンパサンド)」は、実行するコマンドをバックグラウンドで実行する際に使用する記号です。
そこで処理が一つ区切られて、123を別のコマンドとして認識しているため上記のようなエラーとなります。
 
 

 
「()」は、組み合わせて意味を持つ記号ですが、どちらか一つだけではエラーとなります。
 
 

 
「’(シングルクォート)」「”(ダブルクォート)」も、それぞれ値を囲むための記号ですので、値の終点を示す閉じるクォートを求められます。
 
 

 
「;(セミコロン)」はコマンドの終了を意味する記号ですので、「HENSU1=$HENSU1;」と「123」がそれぞれ実行されたため、エラーとなっています。(「123」というコマンドがないため)
 
 

 
「|(パイプライン)」は、それより前で実行された標準出力を次のコマンドの標準入力とするための記号ですので、「HENSU1=$HENSU1;」と「123」がそれぞれ実行されたため、エラーとなっています。(「123」というコマンドがないため)
 
 

意味を持つ記号を区切り文字に使う方法

 
Linuxのコマンドを実行する上で意味を持つ記号は区切り文字には使えない、と説明しましたが、下記の様にクォーテーションで囲むことでそれらの意味を持つ記号を区切り文字として使うことも可能になります。
 

 
上記は区切り文字として「:(コロン)」ではなく「;(セミコロン)」を設定しています。
このように、クォーテーションで囲むことでアルファベット、数字、_(アンダースコア)なども区切り文字として使用することができます。

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。

less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド

Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。

UNIX・Linuxの sedコマンドで特定の文字列を置換する方法

UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。

Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法

作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。

makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新

Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。

Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドは指定したサイズにファイルを分割する

Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。

Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説

Linuxにtac、revというコマンドがある。catの逆の処理なのだが、tacは最終行から逆に表示し、revは行末の文字から逆に表示をすることを解説しつつその使い方について詳しく解説をする。

Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説

Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。

Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare

Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。

Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man
Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man

Linuxのコマンドの実行ファイルやマニュアルの情報を確認するコマンドwhich、whereis、whatis、apropos、manの機能と使い方、似たところと違うところの紹介。