Cookbooks
スクリプティングのための応用的なコードスニペット集っぽいもの。 基本的な文法機能の解説は別に書く。
入門コンテンツ:
コーディング規約:
プロンプトについて:
Examples:
bash -n script.sh # シンタックスチェック
参考:
# 配列の生成
array=() # 空配列
array=("a" "b" "c")
# 配列の要素数
echo ${#array[@]}
# 末尾に要素追加
array+=("x")
# 先頭に追加
array=("x" "${array[@]}")
参考:
Qiitaにまとめを書いた:
参考:
※POSIX標準ではないか。少なくともkshでは動かなさそう。
Examples:
cat << EOS > cat.out
foo
bar
baz
EOS
BODY="$(cat << EOS
Dear Ken,
I'm so happy to write this message.
I'll be back soon!
EOS
)"
ヒアドキュメントは文字列リテラルではなく、標準入力らしい。
参考:
POSIXか、EREなのだと思う。
SYNOPSIS:
if [[ "$str" =~ ^ba*r$ ]]; then
echo match
end
## マッチしないことの検査
if [[ ! "$str" =~ ^ba*r$ ]]; then
echo not match
end
関連項目:
参考:
https://tiswww.case.edu/php/chet/bash/bashref.html#ANSI_002dC-Quoting
$'string'
形式のもの。ユニコードとかエスケープシーケンスで使える。
Examples:
echo $'\e[031mThis text will be colored Red.\e[0m'
echo $'\U25c0'
ビルトインコマンドの説明を表示する。
Examples:
# helpコマンド自身のヘルプを表示
help help
# 擬似man pageモード
help -m unset
参考:
https://tiswww.case.edu/php/chet/bash/bashref.html#Bash-History-Builtins
Examples:
# 10件表示
history 10
Tips:
HISTTIMEFORMAT
をstrftime書式で設定しておくとタイムスタンプを記録してくれる。
また、表示時にその書式でタイムスタンプを表示してくれる参考:
その他の仕様など。
Re: export does not work on array
これは2006年のメールなのだけど、2020-05-23のmacOS + bash v5.0.17でも駄目だった。
サブシェルでは見えるんだけど、子プロセスとして起動したスクリプトからだと見えなかった。
参考:
PS1
変数を設定する。
Examples:
PS1="\[\e[1;34m\][\u@\h \W]\\$ \[\e[m\]"
特殊文字 | 内容 |
---|---|
\u | 現在のユーザ名 |
\h | ホスト名(ドメイン部除く) |
\w | カレントディレクトリ(ホームディレクトリからの絶対パス) |
参考(カスタマイズしたくなったときに見るページ):
スクリプティングのための応用的なコードスニペット集っぽいもの。 基本的な文法機能の解説は別に書く。