メインコンテンツまでスキップ

bash

コマンドオプション

bash -c bash -cは直後の文字列を命令として読み込むためのオプション

bash -c "`curl -fsSL https://raw.githubusercontent.com/takuzoo3868/dotfiles/master/setup.sh `"

shebang(シェバン)

参考URL

2種類の

シェルスクリプトの一行目に必ず記述する #! で始まる行をshebangと言う。 bashスクリプトのshebangは、bashを絶対パスで指定する方法と、envを使って指定する方法の二種類がある。

bash を絶対パスを指定する方法 #!/bin/bash

/bin/bashが使用される。 ※/bin/bash が存在しなければスクリプトの起動時にエラーとなる。

env を使ってを指定する方法 #!/usr/bin/env bash 後者は $PATH 上のbashが使われる(通常、bashは一か所にしかないので、後者でも /bin/bashとなる可能性が高い) 後者のメリットは、たとえば $HOME/.opt 配下に最新のbashをインストールするなどした場合、$PATH にさえ入っていればそっちが使われるというのがあります。

シェルスクリプトのデバッグ

デバッグ参考URL

ターミナル上 $ bash -x [シェルスクリプト名] -xオプションは、シェルスクリプト内で実際に実行されたコマンドを表示するオプション ※変数が使用されている場合は、その変数の値が展開された状態で表示される。

行頭の + の意味

  • : シェルスクリプト内で実行されたコマンド ++ : ``内で実行されたコマンド

$ bash -v [シェルスクリプト名] -vオプションはシェルスクリプト内でこれから実行されるコマンドを表示する。 スクリプト内に記述されているコマンドが出力されるだけのため -xオプションと共に使用されることが多い

null コマンド ( : )

#!/bin/bash
# 文字列の先頭は半角文字にしないと...
: "文字化けします."
: "[DEBUG] デバッグメッセージです."

部分的にデバッグしたい

# デバッグ開始
set -x

var1=`date +%M`

# デバッグ終了
set +x