
~から高度なバッシュスクリプトガイド:
特殊記号 << ... 対話型プログラム < コマンドファイルに類似
実際には、ここで文書表記法に関して私が考えることができるすべては、<<
単に< command-file
またはを使用して行うことができます<<< 'list of commands'
。つまり、私はできる
cat < <(echo fdsa
echo asdf)
または
cat <<< 'fdsa
asdf'
変える
cat << a
fdsa
asdf
a
1つの(明白な)例外は、渡された終了引数に従ってコマンドリストを別々に終了したい場合です。しかし、これが役に立つ状況は思い出されません。
もう1つの例外は、ここで文書を使用すると、特殊文字(例: ')をエスケープすることを心配することなく出力に配置できることです。しかし、これは必須機能ではなく、利便性に近いです。
ここで文書がとても重要なので、Unixがこのために特別な演算子を予約できる場所はどこですか?
答え1
<<<"..."
Bashの励起文字列()またはプロセス置換()を持たない非Bashシェル<(...)
と、誰かがシステム間である程度移植性を示すスクリプトを書く必要があることを検討してください。
このドキュメントは、事前に書式設定された複数行のテキストをユーティリティに渡す必要があるたびに使用され、ユーティリティはコンテンツの変数置換などを実行または実行しないことがあります。
スクリプトでは、これはユーザーにいくつかのテキストを表示するのに役立ちます。たとえば、次のようになります。
退屈なことを避けるために
echo 'Usage:'
echo " $0 [-a|-b] file [file ...]"
echo
echo 'Options:'
(実際に誰かがこれを行い、どの文字列が評価され、どの文字列が評価されていないかを追跡しようとしている実際の例を本で見つけてください。確かに私のコードレビューに合格しないでしょう。https://books.google.com/books?id=0LvYSCi7QsIC&pg=PA201)
代わりに、この文書を次の場所に簡単に供給できますcat
。
cat <<-END_USAGE
Usage:
$0 [-a|-b] file [file ...]
Options:
END_USAGE
END_USAGE
ちなみに、これはここで文書「タグ」(など)をインテリジェントに選択してスクリプトの一定量を文書化する機会も提供しますEND_FTP
。
ftp
また、標準入力から一連のコマンドを読み取ることができる他のプログラムなどのユーティリティに完全なスクリプトを送信するのにも役立ちます。
Bashプログラマーとして、あなたは明らかにBashの作業方法を自由に使うことができますが、ここでは、長くて汚れた文字列を使用するよりも明確なアプローチと比較して、事前にフォーマットされた文書をコマンドに送信する方法をまだ提供していると思います。
削除する/bin/sh
BashのここではBashをPOSIXの適合性を大幅に弱めるので、ほとんどのUnixシステムの候補としてBashを役に立たなくします。