シェルスクリプトをtestというファイル名で作ったらうまく実行できなかった。これはなぜ?

testというコマンドがあるため、それを実行しようとしてしまうからです。 testコマンドではなくて、testシェルスクリプトを実行したい、という場合は

% ./test

と、パス指定してください。もちろん、絶対パスでもいいです。 ただ、面倒なので、testという名前は止めておくか、test.shというような名前にしておく方が よいと思います。

 

ファイル名でtest10〜test19という2桁の指定をメタキャラクタでするには?

% ls test1[0-9]

というように[]を使って記述します。もし、test10〜test99までというように2桁とも指定したい場合は

% rm test[1-9][0-9]

というように、[]を複数組み合わせて指定します。

ただ、慣れないうちは予定外のファイルも指定してしまうことがありますから、lsとかでまず 確認してから行った方が無難です。

 

出力リダイレクションの処理結果とエラーメッセージを別ファイルにするには?

Bourne、Kornシェル

UNIXコマンド > 処理結果のファイル名 2>エラーメッセージファイル名

Cシェル

( UNIXコマンド > 処理結果のファイル名 ) >& エラーメッセージファイル名

 

変数の名前のつけかたにきまりはある?

Bourne、Kornシェル

  • 英字、数字、下線(_)が使用可
  • 英字で始まること
  • 特別な意味を持つ変数(シェル変数)があるので、使用するときに気をつける (HOME,MAIL,PATHなど)

Cシェル

  • 18文字以内の英字が無難。
    UNIXの種類によるが、setコマンドでは、何文字でも変数名を指定できるが、$変数名で参照できなかったり、 20文字以上になるとsetコマンドがエラーになる。 また、数字を含んだ変数名は、foreach文でエラーになるUNIXもある。
  • 特別な意味を持つ変数(シェル変数)があるので、使用するときに気をつける (home,historyなど)