fmemo

BASH

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

シェル変数への値の代入


以下の例では変数VARに値grapeを代入し、それをechoで出力させている。代入のときは$はいらない。参照するときは$をつける。イコールの前後には空白を入れないこと。

$ VAR=grape
$ echo $VAR
grape

特殊変数


$0

実行中のファイル名が代入される

$1 $2 $3 ...

引数が代入される。

$#

引数の数が代入されるされる。

$*


すべての引数が代入されている。区切り文字はIFSで指定できる(デフォルトはスペース)

$@


すべての引数が代入されている。区切り文字はスペース。IFSに影響されない。

$$

プロセスID

参考サイト



特定のコマンドを一定間隔で実行したい

例えば、Hello Worldと標準出力に表示させるのを5秒間隔でおこないたいときは以下のようにする。停止させたいときはCtrl-Cでとめる。
$while true ; do echo "Hello World"; sleep 5; done

ファイルの中身を読み込む


$less list_test
a b c d
e f g h

less echo_test.sh
#!/bin/sh
while read VAR1 VAR2 VAR3 VAR4; do
echo $VAR1 $VAR2 $VAR3 $VAR4  #ここに処理内容を書く
done  

$./echo_test < list_test  #リダイレクトでリストを渡す。
a b c d
e f g h

unixコマンドなどの出力結果を変数に代入する


コマンドをバッククォートで囲む

#!/bin/sh
VAR=`date`  #コマンドdateの出力結果を変数VARに代入
echo $VAR   #変数VARを表示

配列


$ var=(a b c)
$ echo ${var[0]}
a

配列は0からナンバリングされることに注意する。

if文


if [ 条件 ] ; then
  ....
elif [ 条件 ] ; then
  ....
else
  ....
fi

  • 注意事項: [や]の前後にはスペースを入れること

for文


#!/bin/bash
for file in *.txt
do
echo $file;
done

#!/bin/bash
for fruit in apple baana cherry
do 
echo $fruit
done

forを使った一行野郎(ワンライナ)


$ for i in *.tar.gz ; do tar xvzf $i ; done

連番の数字を出力させたいとき


$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
これとfor文を組み合わせると便利

while文


while [ 条件 ]
do
  ....
done

#!/bin/bash
a=1;
while [ $a -le 5 ]
do
 echo $a
 a=$(($a+1))
done

変数の加減乗除


exprを使う

#!/bin/sh
NUM=`expr 3 + 2`  #バッククォートを使ってexprコマンドの出力結果をNUMに代入
echo $NUM

history


過去に入力したコマンドの一覧を表示。

$ history

過去に入力したコマンドのうちで、文字列abcを含むものを表示。

$ history | grep abc

過去に入力したコマンドで番号が10番のものを実行。

$ !10

過去に入力したコマンドでabcで始まる最新のコマンドを実行。

$ !abc

標準出力をファイルに書き出す


  • 新規にファイルを作り、そこに書き込むときには「>」
  • 既存のファイルに追記するときは「>>」
  • Cシェルだと標準エラーだけをファイルに書き出すことができない。

.bashrc

複数のセッションでhistoryを共有する


function share_history {
  history -a
  history -c
  history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend

簡単なコマンドは履歴から消去する


for CMD in ls cd pwd who exit clear [[gnuplot]]
do
  cat ~/.bash_history | grep -v ^$CMD$ > ~/.bash_history_tmp
  mv ~/.bash_history_tmp ~/.bash_history
done

参考になるサイト



記事メニュー
人気記事ランキング
ウィキ募集バナー