シェルスクリプト(shell script)の作り方・構文まとめ

 

シェルスクリプト(shell script)の作り方・構文をまとめました。

随時追加していきます。

 

if [ "$PS1" ]; then のパターン

シェルの if 文では

if 条件式 ; then

となっています。

 

if [ "$PS1" ]; then

はどんな条件になるのでしょうか。

 [] で test コマンドの代わりになります。

 

これなら直感的に何を確認しているのかすぐに分かります。

if [ "$TEST01" = "$TEST02" ]; then

つまり「$TEST01」と「$TEST02」の値が同じかどうかを調べています。

 

しかし、if [ "$PS1" ]; then は、[]の中の値が1つしかありません。

 

サンプルスクリプト

サンプルスクリプトを作成しました。

[test@cent07 ~]$ vi test.sh

#!/bin/sh

# TESTに値をセット
TEST="test_hensu"
# 変数TESTの中身を確認
echo "$TEST"

 

# ただ単に変数だけ入れた状態で実行
if [ "$TEST" ]; then
  echo "真"
else
  echo "偽"
fi

 

# あえて TEST0 に値をセットせずに空にする
TEST0=""
# 変数TESTの中身を確認
echo "$TEST0"

 

# ただ単に変数だけ入れた状態で実行
if [ "$TEST0" ]; then
  echo "真"
else
  echo "偽"
fi

 

# 変数TESTの中身を確認
echo $PS1

# ただ単に変数だけ入れた状態で実行
if [ "$PS1" ]; then
  echo "真"
else
  echo "偽"
fi

 

実行結果

以下、スクリプトの実行結果です。

[test@cent07 ~]$ ./test.sh
test_hensu

 

 


[test@cent07 ~]$

 

なるほど。

「偽」が返ってきます。

つまり「 if [ "$PS1" ]; then 」で何をチェックしていたのかというと、変数 $PS1 に値が入っているかチェックをしていたということになります。

私が見逃しただけかもしれませんが、test コマンドでオプションなしで変数が1つだけ入っている場合は、変数が値を持っているかどうかチェックをしていたということです。

 

 

 

 

 

まとめ

今後もシェルスクリプトで気が付いた点がありましたらどんどん追加していきます。

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。