質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

1回答

2477閲覧

ヒアドキュメントでインデントする方法尾を知りたいです。

124__

総合スコア1

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2021/12/17 00:34

シェルスクリプトのヒアドキュメントに関して質問です。
引数に渡したローカルとリモートのブランチを消去するコードを作成中です。
(引数なしの場合usageを素表示する)

タブを挿入して、エラーを消去する方法を知りたいです。
引数なしで実行すると表示されるエラー内容は以下の通りです。

error: unexpected end of file

コード

if [ $# = 0 ] ; then cat << EOS usage このshell scriptはパラメータに渡したブランチ名のローカルとリモートブランチを消去するコマンドです。 引数にブランチ名を入力してください。 ※複数ブランチを同時に消去することもできます。 EOS else for branch_name in $@ ; do `git branch -d $branch_name` `git push --delete origin $branch_name` done fi

下記のようにインデントしたいので"<<-"を使用して消去しているのですがエラーが発生します。

if [ $# = 0 ] ; then   cat <<- EOS   usage   このshell scriptはパラメータに渡したブランチ名のローカルとリモートブランチを消去するコマンドです。   引数にブランチ名を入力してください。   ※複数ブランチを同時に消去することもできます。   EOS <中略>

またハードタブで\tと入力しても同様でした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/12/17 00:47

OSと実行しているシェルはどういうものですか? 質問文だとインデントが全角空白になっていますが、タブでやってますか?
guest

回答1

0

ヒアドキュメントのデリミターは一行まるごと一致していないといけないので、ハードタブでインデント可能なら次のように記述すればOKだと思います。

bash

1\tcat <<- "\tEOS" 2\tusage 3\t... 4\tEOS

※ '\t' の部分はすべてハードタブに置換が必要。

投稿2021/12/17 00:57

jinskyline

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

angel_p_57

2021/12/17 10:55

> ヒアドキュメントのデリミターは一行まるごと一致していないといけない bashだと「リダイレクト演算子が <<- ならば、行頭にあるタブ文字は全て入力行『および delimiter を含む行から』取り除かれます。 」とありますが…。 参考: bash(1) manページ「ヒアドキュメント」より URL https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html#lbBO タブを入力したつもりでタブ文字になっていないことを疑ってみるのも1つの手ではないかと思います。あと、何のシェルか明記しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問