Bash でドキュメント Here を作成する
- Bash の Here ドキュメント
- Here ドキュメントを使用して、Bash のファイルに複数行の文字列を配置する
- Bash で Here ドキュメントを使用してインタラクティブにスクリプトを記述する
- Here ドキュメントを使用して、Bash の関数にデータを渡する
- Bash の Here ドキュメントでパラメータ置換をオフにする
このチュートリアルでは、Here ドキュメントとは何か、およびファイルに複数行の文字列を書き込み、Bash スクリプトをインタラクティブに記述し、関数で使用し、パラメーター置換をオフにするための使用法について説明します。
Bash の Here ドキュメント
Here ドキュメントは Here ドキュメントの略です。Here ドキュメントは、対話型プログラムを使用してコマンドへの入力を提供します。Here ドキュメントは、Here Tag
を使用して、コマンドへの入力の終了を示します。
最初の Here Tag
は、入力の終わりを示す Here Tag
を定義します。Here ドキュメントで使用されている表記法を以下に示します。
command <<Here Tag
>command1
>command2
>command3
>Here Tag
最初の Here Tag
の前には <<
記号が付いています。この記号は、Here
ドキュメントのインタラクティブ入力を、さらに処理するための標準入力として command
に転送します。
Here Tag
を定義するときは、混乱を避けるために、コマンドリストに表示されないようにしてください。
Here ドキュメントを使用して、Bash のファイルに複数行の文字列を配置する
Here ドキュメントと cat
コマンドを使用して、複数行の文字列をテキストファイルにインタラクティブに入力します。<<
記号の後に続く EOF
は、Here ドキュメントの Here Tag
を定義します。
これは、シェルがこの場合は Here Tag
、EOF
を認識するまで、インタラクティブシェルに複数行の文字列を入力することを意味します。この場合、出力リダイレクト演算子 >
は、cat
コマンドの標準出力を指定されたファイル output.txt
に転送するために使用されます。
cat <<EOF > output.txt
> Hello user.
> Welcome to DelftStack.
> Hope you enjoy your stay.
> EOF
リダイレクト演算子として記号 >>
を使用すると、cat
コマンドの出力が指定されたファイルに追加され、>
記号は新しいファイルを作成します。ファイルがすでに存在する場合は、内容を再書き込みします。ファイルの。
Bash で Here ドキュメントを使用してインタラクティブにスクリプトを記述する
Here ドキュメントと cat
コマンドを使用して、Bash スクリプトをインタラクティブに記述し、出力を Bash スクリプトにリダイレクトします。<<
記号の後に Here Tag
を定義し、インタラクティブ入力の終わりを Here Tag
で区切ります。
以下のスクリプトの Here Tag
は EOF
です。出力リダイレクト演算子 >
を使用して、出力を Bash スクリプト echo.sh
にリダイレクトします。
cat <<EOF > echo.sh
> #!/bin/bash
>
> echo "Hello World!"
> echo "Welcome to DelftStack."
> EOF
cat
コマンドを使用して、echo.sh
スクリプトの内容を確認します。
cat echo.sh
以下の出力の Here ドキュメントを使用して、Bash スクリプトを正常に記述しました。
#!/bin/bash
echo "Hello World!"
echo "Welcome to DelftStack."
Here ドキュメントを使用して、Bash の関数にデータを渡する
以下のスクリプトは、Here ドキュメントからの入力を読み取ります。スクリプトで GetPersonalInfo
という関数を定義しました。この関数には、入力データを読み取るコマンドがあります。
Here ドキュメントを使用して入力データを関数に渡し、echo
コマンドを使用してデータを標準出力に表示しました。関数内で定義された変数は、関数の外部でアクセスされます。これは、local
キーワードで定義されていない限り、Bash の変数はデフォルトでグローバルであるためです。
#!/bin/bash
GetPersonalInfo(){
read fname
read lname
read country
}
GetPersonalInfo <<EOF
John
Doe
USA
EOF
echo "Personal Information"
echo
echo "First Name: $fname"
echo "Last name: $lname"
echo "Country of Residence: $country"
Bash スクリプトを実行すると、次の出力が生成されます。
Personal Information
First Name: John
Last name: Doe
Country of Residence: USA
Bash の Here ドキュメントでパラメータ置換をオフにする
以下のスクリプトの Here ドキュメントを使用して、既存のスクリプトから新しいスクリプトを生成します。Here Tag
、EOF
は、Here ドキュメント内のパラメータ置換を回避するために一重引用符を使用して引用されています。
最初の Here Tag
を引用すると、Here ドキュメント内の特殊文字の文字通りの意味を保持するように Here ドキュメントに指示されます。
#!/bin/bash
echo "This script generates another script."
cat <<'EOF' > add.sh
#!/bin/bash
x=10
y=11
let "sum = $x + $y"
echo "Total of $x and $y is $sum"
EOF
cat
コマンドを使用して、新しく生成されたスクリプト add.sh
の内容を確認しました。
#!/bin/bash
x=10
y=11
let "sum = $x + $y"
echo "Total of $x and $y is $sum"
新しく生成されたスクリプトを実行すると、端末に次の出力が生成されます。
Total of 10 and 11 is 21