set

#!/bin/sh -eux

もしくは

#!/bin/sh  
set -eux  

set -eはエラーが出たら終了

set -uは未定義の変数を使った時に終了

set -xは処理を出力

最初の#!はシェバングと呼ばれる。内部的な挙動はUNIXの部屋 コマンド検索:シェバング (*BSD/Linux)を参照。

変数

変数内の改行を改行してechoする

ダブルクォートで囲む必要がある。

echo "$hoge"

特殊変数

変数展開

改行をスペースに変換したいときは

${hoge/$'\n'/ }

引数

local

パイプ

パイプ中のサブシェルから変数を返す方法

evalexecを使う

リダイレクト

test

オプション 使用例 オプションの意味
-z test -z string string の 文字列長が 0 ならば真 となる。
-n test -n string string の 文字列長が 0 より大ならば真 となる。
-d test -d file file が ディレクトリならば真 となる。
-f test -f file file が 普通のファイルならば真 となる。
-L test -L file file が シンボリックリンクならば真 となる。
-s test -s file file が 0 より大きいサイズならば真 となる。
-e test -e file file が 存在するならば真 となる。
-r test -r file file が 読み取り可能ならば真 となる。
-w test -w file file が 書き込み可能ならば真 となる。
-x test -x file file が 実行可能ならば真 となる。

参照

エラー処理

以下のように書くと見やすい。

command ... || { echo ... ; exit 1 ; }

パイプを使いたいときは全体を括弧で囲む。

( command1 ... || { echo ... ; exit 1 ; } ) | command2  

履歴