Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2869

シェルスクリプト 備忘録

$
0
0

ファイルディスクリプタ

プログラムからファイルを操作する際、操作対象のファイルを識別・同定するために割り当てられる整数値。

  • 標準入力:0
  • 標準出力:1
  • 標準エラー:2

Windowsの世界では、ファイルハンドルとも呼ばれる。
Linuxの場合、ファイルディスクリプタの上限確認は、ulimitコマンドを使用する。

$ ulimit-n
1024

パイプ

複数のコマンドをつなぎ、標準出力を次のコマンドに渡す。

xargsコマンドと併用することで、直前のコマンドの標準出力を後のコマンドの引数にして実行できる。

$ seq 8 | xargs echo
1 2 3 4 5 6 7 8

teeコマンドと併用することで、標準入力と標準出力をファイルに書き出すことができる。

$ echo"Hello world" | tee Hello.txt
Hello world
$ cat Hello.txt
Hello world

${PIPESTATUS[@]}でパイプの先頭、 もしくは途中にあるコマンドの終了ステータスを参照することができる。
$?はパイプの最後の終了ステータスしかわからない。

$ true | true | false$ echo$?
1
$ echo${PIPESTATUS[0]}${PIPESTATUS[1]}${PIPESTATUS[2]}
0 0 1

リダイレクト

コマンドの実行結果をファイルに保存する。

リダイレクトの種類

コマンド説明
コマンド>ファイルコマンド結果をファイルへ書き込む
コマンド<ファイルファイルの内容をコマンドの標準入力へ
コマンド>>ファイルコマンドの結果をファイルへ追記
コマンド2>ファイルコマンドのエラー出力をファイルに書き込む
コマンド2>>ファイルコマンドのエラー出力をファイルに追記
コマンド>ファイル2>&1コマンドの結果とエラー出力をファイルに書き込む
コマンド>>ファイル2>&1コマンドの結果とエラー出力をファイルに追記
コマンド>/dev/null 2>$1表示をしない
  • /dev/nullは、リダイレクト時に出力せず、破棄するときに指定するパス。

変数

  • 参照時には$をつける。
  • =で代入する。前後に空白を入れることはできない。
  • 代入時に$をつけない。
  • ""(ダブルクォーテーションマーク)で囲むと文字列が展開される。
  • ''(シングルクォーテーションマーク)で囲むと文字列は展開されない。
  • ``(バッククオート)で囲むとコマンドの標準出力が変数に設定される。$(command)でもできる。
$ echo$hello#代入$ hello=hello
#参照$ echo$hello
hello
#解放$ unset hello
$ echo$hello#読み取り専用$ readonly var=foo
$ echo$var
huga
$ var=fuga
-bash: var: 読み取り専用の変数です
$ unset var
-bash: unset: var: 消去できません: variable は読み取り専用です

#コマンドの実行結果を変数に代入#$(command)でも代替可能$ cmd=`pwd`$ echo$cmd
/root

位置パラメータ

  • スクリプト実行時に引数として渡された内容は、位置パラメータという変数に保持され、スクリプトの中では、$1~$9で表される。
  • $0は実行中のスクリプト名を表示する。
  • $#は位置パラメータの数を表示する。(0を除く)
  • 位置パラメータを集合的に扱う場合は、$*,$@がある。
  • bashの変数は、グローバルスコープである為、関数内で変数をローカルに扱いたい場合は、localを使用する。
#!/bin/bashecho$0echo$1echo$2echo$3echo$#echo$*echo$@

上記を実行する

$ bash sample.sh p1 p2 p3
sample.sh
p1
p2
p3
3
p1 p2 p3
p1 p2 p3

終了ステータス

  • コマンドの実行結果の成否は特殊偏す$?に代入される。
  • 慣例的に終了ステータス0の場合は正常終了を表し、それ以外はエラーもしくはエラーに準ずる状態である。
  • rm -fの終了ステータスは、常に0になるので注意。

Viewing all articles
Browse latest Browse all 2869

Trending Articles