技術のメモ箱

Shell Script/機能・tips

Shell Scriptの基本

シバン(shebang)

起動してスクリプトを読み込むインタプリタを指定する。
全てのUNIXに存在するBourne Shellを指定するのが無難。

#!/bin/sh

コメント

# コメントはハッシュ文字#から行の終わりまで
# 複数行のコメントを表すものはない

コマンドの区切り

;(セミコロン)で区切ると、複数のコマンドを連続して実行できる。(改行が入力されたのと同じ扱いとなる)

cd /work; pwd

改行の無視

コマンドは改行すると実行されるが、コマンドが長くなると読みにくくなってしまう。
改行を無視するには、バックスラッシュ(円マーク)を行末に置く。

$ echo Hello \
> World.
Hello World.

空ファイルの作り方

: > file
echo -n > file
cp /dev/null file
cat /deb/null > file

コマンドのマニュアルはmanコマンドで見る
定数は大文字、定数以外の変数は小文字、変数名はスネークケースを推奨。関数内変数は先頭に_を付ける。

リダイレクト

標準出力と標準エラーの両方をファイルに出力する

cat abc xxx > nnn 2>&1

エラーメッセージをエラーとして出す

echo "Error messages." 1>&2

複数のコマンドをまとめてリダイレクト

{
  echo "hoge"
  echo "fuga"
} >>logfile.log

ヒアドキュメント

cat << END
  text
  text
  END

文字列操作

ファイル名の操作

$ file=/foo/bar/baz.txt
$ basename $file    # baz.txt
$ dirname $file     # /foo/bar
$ echo ${file%.*}   # /foo/bar/baz
$ echo ${file##*.}  # txt  ※拡張子がない場合は変換が行われないので注意

◆変数の文字数を取得する。空白も1文字、改行コードは含めない。

$ hoge=hoge-value
$ echo ${#hoge}  # 10
pagetop