1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Tips] shell script:q

Last updated at Posted at 2020-02-23

#Tips
/bin/shを利用したTips

コマンドライン引数を利用したい場合に

getopts

example
while getopts "ab:" argument # 引数をargumentへ代入
# 付与された引数を検知し、以降の処理で判定、実行を行う
# オプションに引数を指定する倍位には":"を付与する

キーボード入力によって処理を中断したい場合に

trap

example
trap 'echo "EXIT"; exit' INT
# INTで検知するシグナルを指定する
# kill -l にてシグナルの一覧を閲覧できる

入力値を表示しないようにする

stty

example
stty -echo # 入力値非表示化
read pswd
stty echo  # 入力値表示化

キーバッファを行わない

stty

example
stty raw   # キーバッファ無効化
# y/n制御時の利用が例として挙げられる

カレンダー機能

dialog --calendar

example
dialog --calendar "select date" 2 60 2> test.tmp

デフォルト値の判定

:= :?

example
cp file ${EXAMPLE:=/tmp}
# 変数が存在しない、もしくは、空だった場合に/tmpへファイルがコピーされる

: ${EXAMPLE:=/tmp}
# 処理の先頭での初期化に利用できる

: ${EXAMPLE:? 未定義変数}
# 変数が存在しない、もしくは、空だった場合に、文言を出力

値がint(整数)か判断

test

example
test $1 -eq 0 2>/dev/null
echo $? #0 or 1 or 2
# 0 = 0が渡されている場合。
# 1 = 0以外の整数が渡されている場合
# 2 = int以外が渡されている場合

ファイルが存在する時だけ、外部ファイルを読み込む

[ -f ]

example
[ -f ./funcs.sh ] && . ./funcs.sh
# []はtestを省略した形

未定義変数をエラーとして扱う

set -u

example
set -u
$EXAMPLE # エラーとして出力される

# バグを防ぐ、ひとつの方法として挙げられる
# コマンドライン引数を複数扱う場合には、エラーが発生する可能性が高くなるので注意が必要

実行ユーザによって影響されないモジュールの記述方法

dirname

example
cd "$(dirname "$0")"
# 絶対パス、相対パス、どちらの実行にも対応することができる
# 絶対パス記述でもよいが、運用保守がめんどうになる

コマンドライン引数の上限を超えて扱う

xargs

example
find ./ -name "*.txt" -print | xargs grep "example" /dev/null

example

example

example

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?