標準ストリームと引数

Bashスクリプト入門

Alex Scriven

Data Scientist

STDIN・STDOUT・STDERR

Bash スクリプトには 3 つの「ストリーム」があります。

  • STDIN(標準入力): プログラムへのデータの流れ
  • STDOUT(標準出力): プログラムからのデータの流れ
  • STDERR(標準エラー): エラー出力

既定では、これらは端末から受け取り、端末へ出力します。

呼び出しで 2> /dev/null を見ることがあります。これは STDERR を破棄します。(1> /dev/null は STDOUT)

Bashスクリプト入門

STDIN–STDOUT の図解

先ほど作成したパイプラインを用いた標準ストリームの図解です。

標準ストリームの図

Bashスクリプト入門

STDIN の例

3 行のデータを持つテキストファイル(sports.txt)を考えます。

football
basketball
swimming

cat sports.txt 1> new_sports.txt は、ファイルから読み取り、STDOUT を新しいファイルに書き出す例です。cat new_sports.txt の結果を確認してください。

football
basketball
swimming
Bashスクリプト入門

STDIN と ARGV

Bash スクリプトの重要概念は「引数」です。

スクリプト実行の後ろに空白で続けて 引数 を与えると、スクリプト内で使用できます。

  • ARGV は与えられたすべての引数の配列
  • 各引数は $ 記法でアクセス。1 番目は $1、2 番目は $2 など
  • $@ と $* は ARGV の全引数
  • $# は引数の個数
Bashスクリプト入門

ARGV の例

例のスクリプト(args.sh)を見ます。

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bashスクリプト入門

ARGV 例の実行

次を実行します: bash args.sh one two three four five

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bashスクリプト入門

Let's practice!

Bashスクリプト入門

Preparing Video For Download...