FC2ブログ
ブログパーツ アクセスランキング
インフラ情報まとめ
アクセスランキング
サーバー、クライアント関係の構築、運用等のまとめ書きです。旧名 ほぷぅ(。・ω・)ノPCまとめ

シェル ヒア・ドキュメント Here Documents 1




にほんブログ村 IT技術ブログ IT技術メモへ

シェル ヒア・ドキュメント Here Documents 1


あるコマンドに渡すキーボードからの入力文字列を、そのコマンドの直後に指定することができます。

標準入力用のファイルを用意し、リダイレクト機能でそのファイルから読み込ませるという方法では、ファイルを別個に用意しなくてはなりませんし、リダイレクトの書き方を誤って(スペースのありなしや&の書き忘れ)しまうこともあります。


1つのシェルスクリプトの中に、入力する文字も同時に書いてしまえればファイルは1つですみますし、リダイレクトを番号で操作したりするよりわかりやすくなります。

そういう書き方をヒア・ドキュメントといいます。


書き方例
<<word


wordという部分にはどのような言葉(文字)を使ってもかまいません
この場合、このあとwordという言葉が「行頭に、しかもその一語だけの行として出てくるまでの間に書かれたテキストがすべての標準入力からのものとして処理されます。

「ここまでの入力のデータとして扱う」の意味をできるだけ明示的にするためにwordの部分にはEOFやENDという言葉が使われます

command << END
・・・・・・・・
・・・・・・・・
END

こうかくと、・・・・・の部分が command の入力として扱われます。


cat コマンドについて考察します。引数にファイル名が指定されていればそのまま画面に
出力します(標準出力)。catコマンドに引数が何もない場合には、標準入力から入力を読み取り、
キーボードから ^D(Ctrl+D)が入力されるまで入力されたものをそのまま表示します

[root@localhost sh]# cat ←引数なし
This is a ←入力
This is a ←そのまま表示された
input data. ←入力
input data. ←そのまま表示された この直後 CTRL+Dキー入力で戻る
[root@localhost sh]#


これを、<<を使用してみます。
[root@localhost sh]# cat << END
> This is a
> hire document.
> END
This is a
hire document.

<<のあとに指定した文字列が現れるまでが、コマンドの入力として扱えます。


ここで、入力データの中に、$が入っていると・・・
[root@localhost sh]# cat << END
> This is a
> here $DOC.
> END
This is a
here .

$DOCという変数として処理してしまいます。$DOCにはなにも設定されていませんので空白つぎの.(ピリオド)だけがむなしく表示されます。


次のように変数に値をセットしておけば、その値に変換されて出力されます。
[root@localhost sh]# DOC=document
[root@localhost sh]# cat << END
> This is a
> here $DOC.
> END
This is a
here document.


次のようにバックスラッシュで(\)「ろ」のキーでクォートすれば変数にならずに処理できます。
[root@localhost sh]# DOC=document
[root@localhost sh]# cat << \END
> This is a
> here $DOC.
> END
This is a
here $DOC.

もちろんその変数だけをクォートしてもかまいませんが全体をクォートしてしまう前者のほうがおすすめです。


シングルクォーテーションで囲っても同じ効果があります。
[root@localhost sh]# DOC=document
[root@localhost sh]# cat << 'END'
> This is a
> here $DOC.
> END
This is a
here $DOC.



関連記事







テーマ:UNIX/Linux - ジャンル:コンピュータ


  1. 2012/12/10(月) 19:30:34|
  2. Linux/Unix シェル
  3. | トラックバック:0

トラックバック

トラックバック URL
http://pcmemorin.blog.fc2.com/tb.php/458-33eb3ba2
この記事にトラックバックする(FC2ブログユーザー)


サイトマップ・お奨め記事

CentOS7 まとめ
Ubuntu14 まとめ
Ubuntu12用無線アダプタ紹介
Ubuntu12 まとめ
Server 2008R2 まとめ
SCCM2012R2 まとめ
Windows10 アップグレード
Windows7 まとめ
Windows7 SSD まとめ
Windows8 まとめ
EaseUS Todo Backup Server
Linux Destbision まとめ
Linuxコマンド関連Index
Zorin8.1まとめ
Fedora17まとめ
Fedora15まとめ
VB Script まとめ
USB3.0で快適バックアップ
リンク集・メール


スポンサードリンク


リンク


サイト登録Paseon

・はじめての自宅サーバ構築 - Fedora/CentOS -

・Fedoraで自宅サーバー構築

・CentOSで自宅サーバー構築

・ぼくんちのTV別館

・ネットセキュリティブログ

・まとめ横丁

・オールフリーソフト


相互リンク更新情報
BookMark
GPUベンチマーク(ドスパラ)
VMware OS仮想化
EaseUS
Fedora releases ISO
【Http外部からの表示確認】
ポートスキャンチェック
IPA情報処理推進機構
無料DNS ieServer
無料DNS-MyDNS
yahooログイン履歴チェック
メール不正中継拒否テスト
Fedora Project
allbootdisks
Edy Viewer
ESXi動作実績ハードウェア@Wiki
IEEE Standards

---ライセンス認証解除系リンク---
ShadowProtect Personal
.NET製品
弥生



--所有サーバーWiki--
NEC Express5800/S70
HP ProLiant ML110G5
PRIMERGY TX100 S3

このブログをリンクに追加する

カテゴリ

Linux (45)
Linux-CentOS7 (70)
Linux-Ubuntu14.04 (87)
Linux-Ubuntu12.04 (76)
Linux-Zorin8.1 (36)
Linux-Fedoras.soft (19)
Linux-Fedora18 (11)
Linux-Fedora17 (39)
Linux-Fedora15 (60)
Linux-Fedora11 (36)
Linux-Fedora16 (1)
Linux-Security (3)
Linux/Unix シェル (38)
Linux Distribution (53)
仮想OS (31)
Windows Server 2008 (254)
Windows Server 2012 (30)
Windows Server コマンド (39)
Windows Server アプリ (14)
Windows (40)
Windows 10 (3)
Windows 7 (59)
Windows 8 (257)
Windowsアプリ (23)
Windows 8 アプリ (29)
Windows レジストリ (6)
Windows BAT (17)
ネットワーク (5)
MySQL (1)
ニュース (8)
ハードウェア (11)
Windows VBScript-Basp21 (1)
VBScript (29)
Windows Vista (1)
Windows グループポリシー (3)
Security (6)
未分類 (4)
クールなアイテムまとめ (5)
Game (1)
PowerShell (4)


Linux ブログランキングへ

カテゴリ2

SCCM Backup 遠隔操作 VirtualBox FeliCaポート/パソリ ESXi 

カウンター

RSSリンクの表示

アクセスランキング

[ジャンルランキング]
コンピュータ
85位
アクセスランキングを見る>>

[サブジャンルランキング]
その他
15位
アクセスランキングを見る>>



フィードメーター - ほぷぅ(。・ω・) ノ PCまとめ Linux,Win,自宅サ..


Windows ブログランキングへ

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

 



Linux ブログランキングへ





<%plugin_third_title>

<%plugin_third_description>

<%plugin_third_content>

<%plugin_third_description2>