vine-users ML アーカイブ



[vine-users:064750] Re: checkinstall で「セグメンテーション違反」

  • From: 加藤 雅 <mkato@xxxxxxxxxxxxx>
  • Subject: [vine-users:064750] Re: checkinstall で「セグメンテーション違反」
  • Date: Wed, 25 Feb 2004 23:05:24 +0900
加藤(大阪)です。

極一部に反応します。

Wed, 25 Feb 2004 01:30:58 +0900 付
松本 悟 <helios.reds@xxxxxxxxxxxxxxx> さんのメールより:

> つまり "$@" は "$1" "$2" ... と同じです。位置パラメータが無い場合
> には、"$@" と $@ を展開しても空文字列になります (つまり取り除かれます)。
> 
> …とあるのですが、読み込みが足りないせいかもしれませんが、いまひとつ何を
> 意味しているのか理解できていません。
> 
> なにかヒントや気になることでもありましたら、どうぞご教授願います。

(以下は、実際に試してみられることをお推めします)

適当なテスト用ディレクトリを作って、その中で tst1 tst2 と言う 2個のシェ
ルスクリプトを作ってみて下さい。

--- tst1 の内容
#! /bin/sh
echo +++ this is test1
echo '$@ =' $@
$@
echo +++ test1 exit

--- tst2 の内容
#! /bin/sh
echo === this is test2
echo $@
ls
echo === test2 exit

次のコマンドラインを実行してみて下さい。

$ ./tst1  ./tst2 123 abc

(ご覧の通り、tst1 スクリプトを ./tst2、123、 abc、と、3個のパラメータ
付きで実行しています。123 以下をいろいろ替えてみて下さい)

以下は実行結果です。

+++ this is test1
$@ = ./tst2 123 abc
=== this is test2
123 abc
tst1  tst2
=== test2 exit
+++ test1 exit

つまり tst1 の "$@" が、

  ./tst2 123 abc

と言うコマンドラインに相当するわけです。

例えば installwatch の該当行の直前に

  echo $@

を挿入すれば、$@ の正体を知る手掛りに成ると思います。
同様にして、echo $なんたら、で「$なんたら」変数の価を知ることが出来ま
す。

極めて原始的なテクですが・・・。

-- 
加藤 雅 <mkato@xxxxxxxxxxxxx>
	http://add10.hp.infoseek.co.jp/rox/