「シェルスクリプトの基礎 - クォーテーション」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(Wiki がページ「クォーテーションの使い分け(シェルスクリプト)」を「シェルスクリプトの基礎 - クォーテーション」に、リダイレクトを残さずに移動しました)
(文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…)
 
(同じ利用者による、間の2版が非表示)
18行目: 18行目:
以下のサンプルコードでは、変数STRINGSにHello World.という文字列を格納して、echoで表示させている。<br>
以下のサンプルコードでは、変数STRINGSにHello World.という文字列を格納して、echoで表示させている。<br>
変数STRINGSをシングルクォーテーションで囲っているため、変数の内容が展開されずに、そのまま$STRINGSが文字列として出力される。<br>
変数STRINGSをシングルクォーテーションで囲っているため、変数の内容が展開されずに、そのまま$STRINGSが文字列として出力される。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
  STRINGS='Hello World.'
  STRINGS='Hello World.'
   
   
  echo '$STRINGS'
  echo '$STRINGS'
  </source>
  </syntaxhighlight>
<br>
<br>
  # 出力
  # 出力
31行目: 31行目:
Hello ‘World’という文字列を表示させる場合、'Hello '(Helloを出力) + \'('を出力) + 'World'(Worldを出力) + \'('を出力)というように、<br>
Hello ‘World’という文字列を表示させる場合、'Hello '(Helloを出力) + \'('を出力) + 'World'(Worldを出力) + \'('を出力)というように、<br>
シングルクォーテーションを一度閉じてから、\'でシングルクォーテーションをエスケープする必要がある。<br>
シングルクォーテーションを一度閉じてから、\'でシングルクォーテーションをエスケープする必要がある。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
  echo 'Hello '\''World'\'
  echo 'Hello '\''World'\'
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


42行目: 42行目:
<br>
<br>
以下のサンプルコードでは、$STRINGSをダブルクォーテーションで囲っているため、変数の内容が展開され、格納されていたHello World.という文字列が表示される。<br>
以下のサンプルコードでは、$STRINGSをダブルクォーテーションで囲っているため、変数の内容が展開され、格納されていたHello World.という文字列が表示される。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
48行目: 48行目:
   
   
  echo "$STRINGS"
  echo "$STRINGS"
  </source>
  </syntaxhighlight>
<br>
<br>
  # 出力
  # 出力
58行目: 58行目:
<br>
<br>
以下のサンプルコードでは、dateコマンドで現在(シェルスクリプト実行時)の日時を取得して表示させるシェルスクリプトを実行している。<br>
以下のサンプルコードでは、dateコマンドで現在(シェルスクリプト実行時)の日時を取得して表示させるシェルスクリプトを実行している。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
  echo "今の日時は`date`です。"
  echo "今の日時は`date`です。"
  </source>
  </syntaxhighlight>
<br>
<br>
  # 出力
  # 出力
70行目: 70行目:
バッククォーテーションで囲まれているコマンドを、さらにシングルクォーテーションで囲むと、<br>
バッククォーテーションで囲まれているコマンドを、さらにシングルクォーテーションで囲むと、<br>
コマンドは実行されずに、`date`という文字列として表示されるので注意すること。<br>
コマンドは実行されずに、`date`という文字列として表示されるので注意すること。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/bash
  #!/bin/bash
   
   
  echo '今の日時は`date`です。'
  echo '今の日時は`date`です。'
  </source>
  </syntaxhighlight>
<br>
<br>
  # 出力
  # 出力
83行目: 83行目:
通常はシングルクォーテーションを使用して、変数の展開やコマンドの実行結果を表示させたい場合にダブルクォートを使うという形を取るようにするべきである。<br>
通常はシングルクォーテーションを使用して、変数の展開やコマンドの実行結果を表示させたい場合にダブルクォートを使うという形を取るようにするべきである。<br>
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:シェルスクリプト]]
[[カテゴリ:シェルスクリプト]]

2024年10月14日 (月) 10:38時点における最新版

概要

シェルスクリプトではクォートによって囲まれた中身の処理がそれぞれ異なる。
ここでは、クォートごとの処理内容について記載する。

クォートの種類

  • シングルクォーテーション '文字または文字列'
    内容を文字列として出力する。
  • ダブルクォーテーション "変数名"
    変数の内容を文字列として出力する。
  • バッククォーテーション `コマンド名`
    コマンドとして実行して、結果を出力する。



シングルクォーテーション

囲んだ文字や文字列を出力する場合、シングルクォーテーションを使用する。
シングルクォーテーションで囲った場合、たとえ中に変数名が記述していても、変数の内容を展開することなく変数名がそのまま文字列として処理される。

以下のサンプルコードでは、変数STRINGSにHello World.という文字列を格納して、echoで表示させている。
変数STRINGSをシングルクォーテーションで囲っているため、変数の内容が展開されずに、そのまま$STRINGSが文字列として出力される。

 #!/bin/bash
 STRINGS='Hello World.'
 
 echo '$STRINGS'


# 出力
$STRINGS


※文字としてシングルクォーテーションを表示する場合
Hello ‘World’という文字列を表示させる場合、'Hello '(Helloを出力) + \'('を出力) + 'World'(Worldを出力) + \'('を出力)というように、
シングルクォーテーションを一度閉じてから、\'でシングルクォーテーションをエスケープする必要がある。

 #!/bin/bash
 
 echo 'Hello '\''World'\'



ダブルクォーテーション

ダブルクォーテーションは、囲った文字列に変数名がある場合、変数の内容を展開して表示させたい場合に使用する。

以下のサンプルコードでは、$STRINGSをダブルクォーテーションで囲っているため、変数の内容が展開され、格納されていたHello World.という文字列が表示される。

 #!/bin/bash
 
 STRINGS='Hello World.'
 
 echo "$STRINGS"


# 出力
Hello World.



バッククォーテーション

バッククォーテーションは、シェルスクリプトの中でコマンドを実行させる場合に使用する。

以下のサンプルコードでは、dateコマンドで現在(シェルスクリプト実行時)の日時を取得して表示させるシェルスクリプトを実行している。

 #!/bin/bash
 
 echo "今の日時は`date`です。"


# 出力
今の日時は2020年  2月 11日 火曜日 10:14:21 JSTです。


※注意 バッククォーテーションで囲まれているコマンドを、さらにシングルクォーテーションで囲むと、
コマンドは実行されずに、`date`という文字列として表示されるので注意すること。

 #!/bin/bash
 
 echo '今の日時は`date`です。'


# 出力
今の日時は`date`です。



シングルクォーテーションとダブルクォーテーションの使い分け

通常はシングルクォーテーションを使用して、変数の展開やコマンドの実行結果を表示させたい場合にダブルクォートを使うという形を取るようにするべきである。