• ベストアンサー

$0の変数について

$0の変数には、パスを含んだ形式でプロセス名が編集されると思うのですが、この変数からパスをはずした形式でユーザ変数にセットする簡単な方法はありませんか? たとえば$0に、/tmp/a.sh と設定されている場合に 変数 $shlに a.sh を設定したいのですが。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

basename コマンドで、お望みのことができます。 お使いのシェルが sh なら shl=`basename $0` で、csh なら set shl=`basename $0` で、 $shl に $0 からパス名を除いたものがセットされます。 以下は、csh によるサンプルプログラムです。   % cat /tmp/a.sh   #!/bin/csh -f   set shl=`basename $0`   echo $0   echo $shl 実行結果は、   /tmp/a.sh   a.sh となります。

kiyoto
質問者

お礼

回答頂きありがとうございます。 早速確認させていただきます。

その他の回答 (1)

  • kayu24
  • ベストアンサー率0% (0/2)
回答No.2

cshだけでしかできないのかもしれませんが・・・ set shll=$0:t で、パスは取り除かれます。 ちなみに、パスが取り除かれたa.shからさらに拡張子(というか末尾の"."とそれ以降の文字列)を取り除きたい場合は set shll2=$shll:r で行けます。

kiyoto
質問者

お礼

回答ありがとうございます。 確認してみます。

関連するQ&A