× 無料のユーザー登録をすると学習状況を管理することができるようになります

#03 変数を使ってみよう

さて、次はシェルスクリプトの中で使える変数について見ていきたいと思います。
前回使ったファイルを使っていきましょう。

変数に文字列を割り当ててそれを表示する方法について学んでいきます。

  • 変数への代入
  • $a
  • "$a"
  • "${a}"
  • 文字列の連結
  • 変数の展開

このレッスンでは CentOS 5 を使用しています。

2013年1月16日
シェルスクリプトで改行を含むテキストを出力したい場合はヒアドキュメントが使えます。

例として以下のようなテキスト出力があったとします。
echo "hi!"
echo "my name"
echo "is taguchi"
これは以下のように書き換えることができます。
cat <<_EOM_
hi!
my name
is taguchi
_EOM_
※「_EOM_」は「End of Message」の略で使いましたが、この記号はなんでもかまいません。

またヒアドキュメントを使うと変数の中身も展開してくれます。
x=10
cat <<_EOM_
the value of 
x is
$x
_EOM_
では、
the value of 
x is
10
が表示されます。

なお、変数を展開したくない場合は、終了文字を'でエスケープしてあげます。
x=10
cat <<'_EOM_'
the value of 
x is
$x
_EOM_
とすれば「$x」がそのまま出力されます。
2012年12月25日
bashのシェルスクリプトのデバッグには、-xオプションが便利です。これを使うと実際に使われた命令を表示してくれます。変数などを使っていてどう展開されたのかを知りたいときに便利です。

使い方は簡単で、最初の一行目に-xオプションを付けてあげましょう。例えば次のようなシェルスクリプトを書いてみます。
#!/bin/bash -x
x=5
echo $x

これを実行すると、次のように表示されます。
$ ./hello.sh 
+ x=5
+ echo 5
5

このように「+」のあとに実際に実行された命令が表示されているのが確認できます。

変数がうまく展開できない、想定外の動作をしてしまう、というときに使ってみましょう。
2012年12月19日
echoと合わせて覚えたいのが、書式を指定しつつ変数を展開できる printf 命令です。
たとえば以下のように使います。
x=5
s="taguchi"

# 数値は%dで展開、\nは改行
# i have 5 apples
printf "i have %d apples\n" $x

# 文字列は%sで展開
# my name is taguchi
printf "my name is %s\n" $s

# 桁数を指定可能
# [    5]
printf "[%5d]\n" $x

# 左詰めに
# [5    ]
printf "[%-5d]\n" $x

# 5桁、あまったら0で埋める
# [00005]
printf "[%05d]\n" $x

このレッスンの問題を報告する

この動画に関する、よくある質問はまだありません。

プレミアム会員(月額980円)になると、全レッスンの素材ファイルをダウンロードできます。

詳しい説明を読む

プレミアム会員(月額980円)になると、全レッスンのソースコードを見られるようになります。

詳しい説明を読む

このレッスンの問題を報告する

先生に質問してみよう (試験運用中)