UNIX/sh - (2011/03/04 (金) 15:09:39) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
&topicpath()
#contents
----
*sh/bash
sh(Bourne Shell) / bash (Bourne Again Shell)
いわゆる(B)シェルについてまとめ
kshやzsh等も(B)シェル系ですが使った覚えがないのでパス
**基本的なこと
#region(close,開く)
ログインシェルとしてコマンドラインから実行できる
テキストファイルでコマンドを書き込んでスクリプトとして実行できる
( 1行目は必ず #!/bin/sh )
例: test.shの内容
#!/bin/sh
echo TESTTEST
コマンドラインで
$ sh test.sh
またはchmodで実行権(+x)を付与しておけば
$ ./test.sh
で実行できる
#endregion
**変数
#region(close,開く)
***宣言
ABC=1
ABC=2.0
ABC=aaa.txt
のように型宣言せずにいきなり代入できる
***参照と代入
使うときには $ をつける
grep $ABC xxx.txt
-変数をくっつける場合には ${ABC} のように記述する
FILE_NAME=test_${ABC}.txt
→変数FILENAMEに "test_(変数ABCの中身).txt"が代入される
***環境変数
-envコマンドで表示される環境変数を使うことが出来る
|BGCOLOR(#0AA):CENTER:主な環境変数|BGCOLOR(#0AA):CENTER:内容|h
| $HOME |ホームディレクトリ|
| $PWD |カレントディレクトリ|
| $PATH |パス|
| $IFS |区切り文字 デフォルトは" " (SPACE)|
***変数関連コマンド
|BGCOLOR(#0AA):CENTER:コマンド|BGCOLOR(#0AA):CENTER:内容|h
| readonly |読み取り専用の変数宣言&br()例:&br()readonly ABC=123|
| unset |変数を削除する|
| export |シェル変数を環境変数に設定&br()例:&br()ABC=123&br()export ABC|
***特殊な変数
|BGCOLOR(#0AA):CENTER:変数|BGCOLOR(#0AA):CENTER:内容|h
| $# |引数の数|
| $0 |実行したシェルそのもののファイル名|
| $1~$9 |引数 10番目以上の引数を使用する場合は&br()${10}のように書く&br()あるいはshiftコマンドで引数の順番を前にずらす|
| $* |すべての引数&br()※"$*"はひとつの変数扱いになる|
| $@ |すべての引数&br()※"$@"はそれぞれがそれぞれバラバラに扱われる|
| $$ |シェル自身のプロセスID|
| $? |直前に実行したコマンドの戻り値&br()正常なら0|
| $LINENO |シェル内での現在実行中の行番号|
#endregion
***条件式(test)
#region(close,開く)
test 条件式
または
[ 条件式 ]
|BGCOLOR(#0AA):CENTER:条件式|BGCOLOR(#0AA):CENTER:内容|h
| \( E1 \) |条件E1が真なら真|
| ! E1 |条件E1が偽なら真|
| E1 -a E2 |条件E1と条件E2 両方が成立するなら真 (and)|
| E1 -o E2 |条件E1と条件E2 どちらかが成立するなら真 (or)|
|>|BGCOLOR(#6EE):CENTER:文字列比較|h
| S1 |文字列S1の長さが0でないなら真&br()-n S1 でも同じ|
| -z S1 |文字列S1の長さが0なら真|
| S1 = S2 |文字列S1とS2が一致するなら真|
| S1 != S2 |文字列S1とS2が不一致なら真|
| S1 \< S2 |文字列をASCII順で比較し、S1が前ならば真&br()※エスケープ(\\)しないとリダイレクションになってしまう|
| S1 \> S2 |文字列をASCII順で比較し、S1が後ならば真&br()※エスケープ(\\)しないとリダイレクションになってしまう|
|>|BGCOLOR(#6EE):CENTER:数値比較|h
| N1 -eq N2 |整数N1とN2が等しければ真(equal)|
| N1 -ne N2 |整数N1とN2が等しくなければ真(not equal)|
| N1 -gt N2 |整数N1がN2より大きければ真(greater than)|
| N1 -ge N2 |整数N1がN2より大きいか等しければ真(greater than or equal)|
| N1 -lt N2 |整数N1がN2より小さければ真(less than)|
| N1 -le N2 |整数N1がN2より小さいか等しければ真(less than or equal)|
|>|BGCOLOR(#6EE):CENTER:ファイル関連|h
| -e &italic(){FILE} |ファイル&italic(){FILE}が存在するなら真|
| -s &italic(){FILE} |ファイル&italic(){FILE}が存在しサイズが0でないなら真|
| -f &italic(){FILE} |ファイル&italic(){FILE}が存在し(普通の)ファイルならば真&br()(存在してもディレクトリなら偽)|
| -d &italic(){FILE} |ファイル&italic(){FILE}が存在しディレクトリなら真|
| -h &italic(){FILE} |ファイル&italic(){FILE}が存在しシンボリックリンクなら真&br() -L でも同義|
| -r &italic(){FILE} |ファイル&italic(){FILE}が存在し読み込み可能なら真&br()ファイルがリンクならば本体の属性に従う|
| -w &italic(){FILE} |ファイル&italic(){FILE}が存在し書き込み可能なら真&br()ファイルがリンクならば本体の属性に従う|
| -x &italic(){FILE} |ファイル&italic(){FILE}が存在し実行可能なら真&br()ファイルがリンクならば本体の属性に従う|
| -k &italic(){FILE} |ファイル&italic(){FILE}が存在しstikky bitが立っているなら真&br()2011.03.03 要確認|
| -O &italic(){FILE} |ファイル&italic(){FILE}が存在し、実行者がファイルのオーナーであれば真|
| -G &italic(){FILE} |ファイル&italic(){FILE}が存在し、実行者のグループがファイルのグループと一致すれば真|
| &italic(){FILE1} -ef &italic(){FILE2} |ファイル&italic(){FILE1}とファイル&italic(){FILE2}が同じデバイスでinodeが一緒なら真&br()(物理的に同じファイルか同じものをさすリンクであれば真)|
| &italic(){FILE1} -nt &italic(){FILE2} |ファイル&italic(){FILE1}がファイル&italic(){FILE2}より新しければ真(newer than)|
| &italic(){FILE1} -ot &italic(){FILE2} |ファイル&italic(){FILE1}がファイル&italic(){FILE2}より古ければ真(older than)|
#endregion
***構文
//#region(close,開く)
|BGCOLOR(#0AA):CENTER:構文|BGCOLOR(#0AA):CENTER:内容|h
|if 条件式&br()then&br()&tab()処理1&br()(elif&tab()条件式2&br()then&br()&tab()処理2)&br()(else&br()&tab()処理3)&br()fi |条件式が真なら処理1を実行&br()(条件式が偽なら処理2を実行)|
//#endregion
----
&link_toppage()
&topicpath()
----
&topicpath()
#contents
----
*sh/bash
sh(Bourne Shell) / bash (Bourne Again Shell)
いわゆる(B)シェルについてまとめ
kshやzsh等も(B)シェル系ですが使った覚えがないのでパス
**■基本的なこと
ログインシェルとしてコマンドラインから実行できる
テキストファイルでコマンドを書き込んでスクリプトとして実行できる
( 1行目は必ず #!/bin/sh )
例: test.shの内容
#highlight(bash){{
#!/bin/sh
echo TESTTEST
exit 0}} // #highlight(bash)
コマンドラインで
$ sh test.sh
またはchmodで実行権(+x)を付与しておけば
$ ./test.sh
で実行できる
----
*sh/bash 下位ページ
#lsd()
----
&link_toppage()
&topicpath()
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: