エス技研

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.

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

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

  関連記事

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

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

Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする

Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。

cat、less、head、tail、split、sedなどLinuxでファイルを操作するコマンド
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

Linuxでファイル、テキストを操作するコマンドのまとめ。cat、less、head、tail、split、tr、sedなど、ファイルを表示、置換、連結、分割などの各コマンドの使い方の紹介と詳細ページの紹介。

Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する

Linuxのhead、tailコマンドはファイルの先頭の一部、もしくは、末行の一部を表示するコマンド。行数や文字数で指定をする。tailはログを監視するためのオプションがある。

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

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

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

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

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

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

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

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

Linuxのマニュアルページ表示コマンドmanの解説
Linuxのマニュアルページ表示コマンドmanの解説

Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。

Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も

catはLinuxのコマンドで、本来の機能はファイルを連結だが、ファイルの内容を表示する機能のために使うことが多く使用頻度が高い。同種の機能のmore、less、tacコマンドについても解説。