シェバング(shebang)は#!/bin/shではなく#!/bin/bashにする
#!/bin/bash
インデントは半角スペース2つ
function usage() {
cat <<_EOT_
Usage:
$0 [-a] [-b] [-f filename] arg1 ...
Description:
hogehogehoge
Options:
-a aaaaaaaaaa
-b bbbbbbbbbb
-f ffffffffff
_EOT_
exit 1
}
#!/bin/bash
function usage() {
cat <<_EOT_
Usage:
$0 [-a] [-b] [-f filename] arg1 ...
Description:
hogehogehoge
Options:
-a aaaaaaaaaa
-b bbbbbbbbbb
-f ffffffffff
_EOT_
exit 1
}
if [ "$OPTIND" = 1 ]; then
while getopts abf:h OPT
do
case $OPT in
a)
FLAG_A="on"
echo "FLAG_A is $FLAG_A" # for debug
;;
b)
FLAG_B="on"
echo "FLAG_B is $FLAG_B" # for debug
;;
f)
ARG_F=$OPTARG
echo "ARG_F is $ARG_F" # for debug
;;
h)
echo "h option. display help" # for debug
usage
;;
\?)
echo "Try to enter the h option." 1>&2
;;
esac
done
else
echo "No installed getopts-command." 1>&2
exit 1
fi
echo "before shift" # for debug
shift $((OPTIND - 1))
echo "display other arguments [$*]" # for debug
echo "after shift" # for debug
readonly CONSTANT_PARAM="hoge" score=100
readonly MAX_NUMBER=100
function cal_score_ave() {
local _score_sum=0
# ...
}
| 対象 | 命名規則 | 備考 |
| ファイル名(絶対パス) | HOGE_FILE | |
| ディレクトリ名(絶対パス) | HOGE_DIR | |
| ファイル名(パスなし) | HOGE_FILENAME | |
| ディレクトリ名(パスなし) | HOGE_DIRNAME | |
| # ファイル名(絶対パス) | readonly HOGE_FILE="/var/tmp/hoge.txt" | |
| # ディレクトリ名(絶対パス) | readonly HOGE_DIR="/var/tmp/hoge" | |
| # ファイル名(パスなし) | readonly HOGE_FILENAME="hoge.txt" | |
| # ディレクトリ名(パスなし) | readonly HOGE_DIRNAME="hoge" |
function cal_score_ave() {
# ...
return 0
}
function cal_score_ave() {
# ...
return 0
}
CMD1 | CMD2
CMD1 >hoge.txt CMD1 >>hoge.txt CMD2 <fuga.txt CMD2 <<fuga.txt
{
echo "hoge"
echo "fuga"
echo "piyo"
} >>logfile.log
if [ $? -ne 0 ]; then # ... exit 1 fi
for _score in ${SCORE_ARRAY[@]}
do
_score_sum=$((_score_sum + _score))
done
while IFS=$`\n` read _line
do
echo $_line
done <hoge.txt
[ $hoge = $foo ] && echo "true" || echo "false"
bashコーディング規約参考からリンク2年以上前
Bash, Zsh, Korn shellでしか使えませんが、[よりも[[のほうが一般的な演算子や正規表現が使えるのでオススメです。 http://mywiki.wooledge.org/BashFAQ/031
functionはBash・zshでしか使えないので追記をよろしくお願いします。この書き方で慣れてしまうとShebangが#!/bin/shのスクリプトに手を加えるときに少し面倒なことになります。(その場合はfunction抜きで書きます)