【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

$0の変数には、パスを含んだ形式でプロセス名が編集されると思うのですが、この変数からパスをはずした形式でユーザ変数にセットする簡単な方法はありませんか?

たとえば$0に、/tmp/a.sh と設定されている場合に
変数 $shlに a.sh を設定したいのですが。

宜しくお願いします。

A 回答 (2件)

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

となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/14 16:02

cshだけでしかできないのかもしれませんが・・・



set shll=$0:t で、パスは取り除かれます。
ちなみに、パスが取り除かれたa.shからさらに拡張子(というか末尾の"."とそれ以降の文字列)を取り除きたい場合は
set shll2=$shll:r
で行けます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/19 21:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!