#author("2020-11-26T11:44:15+09:00","default:Miyashita","Miyashita")
#author("2020-11-26T11:45:10+09:00","default:Miyashita","Miyashita")
*bash シェルスクリプト メモ [#vaf07869]
コメントは「#」,改行して記述の継続は「\」(バックスラッシュ).
***「*.sh」ファイルの1行目 [#t064b4fa]
シバンというらしい.~
#codeprettify{{
#!/bin/bash
}}
ここでインタプリタを定義するので,bashでない場合はそれに対応したコマンドを選択すれば良い(/bin/shとか/bin/fishとか).

***引用符の区別 [#g99916a0]
' (シングルクォート) 中身を文字列として扱う~
" (ダブルクォート) 変数${PATH}などは展開する~
` (バッククォート) 中身をコマンドとして実行し,その結果を返す~
#codeprettify{{
$ echo '$PATH'
 $PATH
$ echo "$PATH"
 /usr/local/bin:/usr/sbin: .....
$ ls -l `which git`
 -rwxr-xr-x 1 root root 2205840  m月 dd HH:MM /usr/bin/git
}}

***AND,OR表現 [#ddb27e4f]
foo,barという2つの判定式があるとして,
-AND
#codeprettify{{
if [ foo ] && [ bar ]; then
}}
#codeprettify{{
if [ foo -a bar ]; then
}}
-OR
#codeprettify{{
if [ foo ] || [ bar ]; then
}}
#codeprettify{{
if [ foo -o bar ]; then
}}

***変数$varが空かどうか確認 [#m6039701]
長さがゼロがどうかを判定するには「-z」で,ゼロでないかどうかの判定は「-n」.
#codeprettify{{
if [ -z "$var" ]; then
  echo empty
fi
}}
注意すべき点として,ダブルクォーテーション「""」を変数の両端に付さないと,変数が空の場合にエラーを返す.~
また角括弧[]と内側の記述にはスペースを開けなければならない."[-z"というのは✕

***変数の文字列置換 [#p5b499c6]
①: %, #
#codeprettify{{
${var%/*} # ① "/" 以降を切り取り
}}

②: %%, ##
#codeprettify{{
${var##*/} ② "/" 以前を切り取り
${var##*/} # ② "/" 以前を切り取り
}}

③:変数varに含まれるorgの文字列がnewに変わる.~
#codeprettify{{
${var//org/new} #③
}}
#codeprettify{{
# 例
$ var=abcdefg
$ echo ${var%d*}
abc
$ echo ${var#*d}
efg
$ echo ${var//abc/ABC}
ABCdefg
}}
***バックグラウンドのプロセスIDの表示 [#racfc077]
#codeprettify{{
$!
}}
で最後に実行したバックグラウンドプロセスのIDを示す.~
psでたくさん出して絞り込むよりはこちらの方が楽.

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes