Bash でドキュメント Here を作成する

Fumbani Banda 2023年1月30日
  1. Bash の Here ドキュメント
  2. Here ドキュメントを使用して、Bash のファイルに複数行の文字列を配置する
  3. Bash で Here ドキュメントを使用してインタラクティブにスクリプトを記述する
  4. Here ドキュメントを使用して、Bash の関数にデータを渡する
  5. Bash の Here ドキュメントでパラメータ置換をオフにする
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 TagEOF を認識するまで、インタラクティブシェルに複数行の文字列を入力することを意味します。この場合、出力リダイレクト演算子 > は、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 TagEOF です。出力リダイレクト演算子 > を使用して、出力を 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 TagEOF は、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
著者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub