トップページunix
1001コメント327KB

シェルスクリプト総合 その9

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2007/08/15(水) 07:25:02
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ
シェルスクリプト総合 その8
http://pc11.2ch.net/test/read.cgi/unix/1171517324/
0179名無しさん@お腹いっぱい。2007/09/25(火) 14:32:43
>>163 ってマジ? zshで試してみたけど、できないんだが…
0180名無しさん@お腹いっぱい。2007/09/25(火) 22:37:12
>>163 の元は >>158 ね。
0181名無しさん@お腹いっぱい。2007/09/26(水) 00:16:57
$ ls -l '$SHELL'
lrwxr-xr-x 1 root wheel 7 Sep 26 00:13 $SHELL -> /bin/sh
$ cat scr
#!$SHELL
echo a
$ ./scr
a
0182名無しさん@お腹いっぱい。2007/09/26(水) 10:18:40
これはひどいw
0183名無しさん@お腹いっぱい。2007/09/26(水) 12:20:36
>>178
ファイル名が表示されたら、そもそもの [ x -gt y ] が使えないとおも
0184名無しさん@お腹いっぱい。2007/09/26(水) 12:28:03
>>183

set `wc -c fileA`
A=$1
set `wc -c fileB`
B=$1

if [ $A -gt $B ]; then
0185名無しさん@お腹いっぱい。2007/09/26(水) 13:10:43
>>184
それだったら、↓の方が簡単

set `wc -c fileA` `wc -c fileB`
if [ $1 -gt $3 ]; then
0186名無しさん@お腹いっぱい。2007/09/26(水) 15:52:53
>>184
>>185

このsetの使い方ってどういうことなのでしょうか?
理解すれば幅が広がりそう。
0187名無しさん@お腹いっぱい。2007/09/26(水) 17:09:39
>>186
ポジショナルパラメータをセットする
0188名無しさん@お腹いっぱい。2007/09/27(木) 23:09:07
すいません。ご教示ください。
下記のような入力データから、ワークに1行入力して、

ABCDE 12
BC 123
A
BB
CCCCC 2

変数Xへ、2番目のフィールドを取り出す場合は
どうすればよいでしょうか。
もちろん、2番目で空白の場合は、0または読み
飛ばしする。
0189名無しさん@お腹いっぱい。2007/09/27(木) 23:24:54
普通に
while read dummy x; do
echo ${x:-null}
done < file
0190名無しさん@お腹いっぱい。2007/09/27(木) 23:32:34
>>189
ありがとうございました。勉強になりました。
0191名無しさん@お腹いっぱい。2007/09/29(土) 11:38:30
HP-UX上のBシェルです。

NGの場合:
# A=/
# expr substr A 1 1

シンタックスエラー

このシンタックスエラーになる理由がわかりません。Linux(Plamo)ではOKみたいす。

OKの場合:
# A=/a
# expr substr A 1 1
# /

勉強不足ですいませんが、ご教示ください。
0192名無しさん@お腹いっぱい。2007/09/29(土) 11:44:02
どうでもいいけど、Aじゃなくて$Aだよな?

HP-UXのexprがsubstrをサポートしていないんじゃないの?
LinuxのはGNU coreutilsのexprを使っていることが多いので、
いろいろ拡張されているよ。

Macの/bin/exprもsyntax errorになった。
0193名無しさん@お腹いっぱい。2007/09/29(土) 11:56:31
POSIXのexprの説明には
>The use of string arguments _length_, _substr_, _index_ or _match_ produces unspecified results.
とあるな。未定義ということは、鼻から悪魔が出てきてもOK。
0194名無しさん@お腹いっぱい。2007/09/29(土) 12:09:41
A じゃなくて $A じゃないの? と言う点に誰も突っ込まない件に付いて
0195名無しさん@お腹いっぱい。2007/09/29(土) 12:17:46
ありがとうございます。
>>192 193
よくわかりませんが、未定義の動作かも知れませんね。
0196名無しさん@お腹いっぱい。2007/09/29(土) 12:28:35
>>194
>>192
0197名無しさん@お腹いっぱい。2007/09/29(土) 12:36:01
exprに限らず、互換性の点からコマンドの拡張オプションには
ほとんど対応していないことが多いSolarisのexprでさえ、
substrには対応してる。POSIXがどう言っていようが、
業界標準的にはexprはsubstrが使えるべきだろう。
0198名無しさん@お腹いっぱい。2007/09/29(土) 12:42:14
FreeBSDの exprでは使えないね。

ポータビリティ考えたら、exprじゃなく、
echo $A | cut -b1
を使うべきだな。
0199名無しさん@お腹いっぱい。2007/09/29(土) 12:42:25
>>197
確かに互換性を考慮するれば、使えるべきですね。
特定の場合だけ、エラーになるということは、(HP-UX)の不具合なのかも
知れませんね。
0200名無しさん@お腹いっぱい。2007/09/29(土) 12:44:04
>>198
別な方法があるのですね。勉強になります。
0201名無しさん@お腹いっぱい。2007/09/29(土) 12:46:16
>>198
古い cutでは -bオプションが使えない。
cut使うなら↓にするべき。

echo $A | LANG=C cut -c1
0202名無しさん@お腹いっぱい。2007/09/29(土) 13:01:47
再びの質問ですいません。
変数$Aに "/etc 123" という文字列情報(空白がある)があった場合、
123を取り出したい場合は、どうすればよいでしょうか。

"AAA /etc 123"
"AAA BBB /etc 45"

という場合もあり、一番右側の数値だけを取り出したい場合です。
0203名無しさん@お腹いっぱい。2007/09/29(土) 13:10:47
>>202

A='AAA BBB /etc 45'

set $A
shift `expr $# - 1`
echo $1
0204名無しさん@お腹いっぱい。2007/09/29(土) 13:16:20
>>203
なるほど、ありがとうございます。勉強になります。
# スキル不足のため、トライ・エラー繰り返しです。(泣)
0205名無しさん@お腹いっぱい。2007/09/29(土) 20:31:47
もっとシンプル

echo ${A##* }
0206名無しさん@お腹いっぱい。2007/09/29(土) 21:22:12
>>205
Bourne shellの範囲外。失格。
0207名無しさん@お腹いっぱい。2007/09/29(土) 21:28:07
A='AAA BBB /etc 45'

expr "$A" : '.* \([^ ]*$\)'
0208名無しさん@お腹いっぱい。2007/09/29(土) 21:36:37
expr "$A" : '.* \([^ ]*$\)'

上記の意味は、日本語で解説していいただかないとわかないです。
0209名無しさん@お腹いっぱい。2007/09/29(土) 21:48:38
いや、ここは外部コマンドなしが美しい。

A='AAA BBB /etc 45'

set $A; while [ $# -gt 1 ]; do shift; done
echo "$1"
0210名無しさん@お腹いっぱい。2007/09/29(土) 21:53:33
      /     \
     /  / ̄⌒ ̄\
     /   / ⌒  ⌒ |   | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    | /  (・)  (・) |   | てめーなんだよこの糞スレは!!
  /⌒  (6     つ  |   | てめーは精神障害でもあんのか?
 (  |  / ___  |  < 何とか言えよゴルァァァァァァ!
  − \   \_/  /    \__________________
 //  ,,r'´⌒ヽ___/     ,ィ
   /    ヽ       ri/ 彡
  /   i    ト、   __,,,丿)/        ζ           
 |    !     )`Y'''" ヽ,,/      / ̄ ̄ ̄ ̄\        
  ! l   |   く,,   ,,,ィ'"      /.         \ 
  ヽヽ  ゝ    ! ̄!~〜、       /           |    
  ヽ  / ̄""'''⌒ ̄"^'''''ー--、 :::||||||||||||||||||||||||||||||||| 
  Y'´          /    """''''〜--、|||||||||||||||||) 
   (      丿  ,,;;''  ....::::::::::: ::::r''''"" ̄""ヽ   |
   ゝ   ー--、,,,,,___      ::: ::,,,,,ー`''''''⌒''ーイ  ./
     ヽ      \  ̄""'''"" ̄   \____/-、
     ヽ       ヽ  :::::::::::::::::::: /          `ヽ
      ヽ  丿   )       /    ノ   ゝ ヽ ,〉
       ゝ      !      /            ∀
        !     |      /   人     ヽ   ヽ
        |     ,;;}      !ー-、/  ヽ _,,,-ー'''''--ヘ
          |ノ    |      |  /    Y        ヽ
         {     |      |   j      )  >>1     ヽ
0211名無しさん@お腹いっぱい。2007/09/29(土) 22:10:12
>>206
POSIXだから範囲内。 俺の圧勝。
0212名無しさん@お腹いっぱい。2007/09/29(土) 23:06:00
>>211
そういう問題じゃない。Solarisでは動かないし。
0213名無しさん@お腹いっぱい。2007/09/29(土) 23:10:47
##とか%%ってPOSIXだったっけ
0214名無しさん@お腹いっぱい。2007/09/29(土) 23:14:12
>>213
POSIXではあるが、実際の使用は推奨されない。
0215名無しさん@お腹いっぱい。2007/09/30(日) 00:21:16
>>212
xpg4使えばいい。
0216名無しさん@お腹いっぱい。2007/09/30(日) 00:27:23
>>215

各OS共通で
#!/bin/sh
って書くのに、どうやってxpg4を使うって言うんだい。

#!/usr/xpg4/bin/sh
なんてスクリプト見たことないし、
逆に、こう書いてしまうとSolaris以外で動かなくなる。
0217名無しさん@お腹いっぱい。2007/09/30(日) 00:30:03
>>215
NEWS-OS(4) で動かない。xpg4もない。
0218名無しさん@お腹いっぱい。2007/09/30(日) 00:40:36
>>217
NEWS-OSまで遡らなくても、SunOSでも動かないよw 当然 xpg4も無い。
0219名無しさん@お腹いっぱい。2007/09/30(日) 00:45:53
>>216
それはお前がへぼだから。POSIX shellであることを判定して偽なら
/usr/xpg4/bin/shをexecするとか幾らでも方法はある。

>>217-218
はいはい。板違い。
http://bubble6.2ch.net/i4004/
0220名無しさん@お腹いっぱい。2007/09/30(日) 00:48:52
>>219
POSIX shellであることを判定して偽なら
/usr/xpg4/bin/shをexecしているような
シェルスクリプトを未だに見たことがないがw

あと、>>217-218 が言うように xpg4がないOSではどうすんだよwww
0221名無しさん@お腹いっぱい。2007/09/30(日) 00:53:57
## とか %% とか使わなくても書けるのに、
わざわざ動作環境限定して ## とか %% とかで書くことはない。
0222名無しさん@お腹いっぱい。2007/09/30(日) 01:04:25
kshつかえ
0223名無しさん@お腹いっぱい。2007/09/30(日) 01:07:02
kshが標準では入っていないOSは多数ある
0224名無しさん@お腹いっぱい。2007/09/30(日) 01:23:43
いいからつかえ
0225sage2007/09/30(日) 01:33:53
限定ユーザでrootユーザのコマンドってうつ方法ってあるの?
0226名無しさん@お腹いっぱい。2007/09/30(日) 01:36:08
何言ってんの?
0227名無しさん@お腹いっぱい。2007/09/30(日) 01:42:26
>>219
何で「昔のPC」なんだ?
NEWS-OSってSVR4系UNIX-WSなんだけど。

>>222, 224
客からcshでスクリプトを書くよう強制されたときの事を思い出す。
ファイルのクローズができなくて大変だったな....
ところで、 >>223 のようなkshの無い環境で、顧客からの許可が得られない場合、どうやってkshをつかえばいいのか、教えていただけますか?
それだけ強く要求するのですから、きっと万能な解決策をごぞんじなんでしょう?
0228名無しさん@お腹いっぱい。2007/09/30(日) 07:19:29
zsh! zsh!
0229名無しさん@お腹いっぱい。2007/09/30(日) 08:51:16
>>220
シェルスクリプトを異機種間で共有することは稀だからな。
お前が共有したい(#!/usr/xpg4/bin/shは嫌だ)と言い出したんだぞ。

>>221
POSIXを仮定すれば、1ワードで書けるものを水増しする必要は無い。

>>227
保守切れてるWSなんてゴミだよ。
そもそもまともなところなら、セキュリティパッチが出ないマシンは
ネットワーク接続禁止。だから昔のPC。

>>227
そんな仕事受けない。
見積もりで3倍くらいふっかける、それだけ手間がかかるんだから当たり前だ。
0230名無しさん@お腹いっぱい。2007/09/30(日) 08:58:06
>>229
シェルスクリプトは異機種間で共有する際に威力を発揮する。
異機種間で共有する必要がないならC言語で書いた方がいい。

たとえば、GNUのconfigureスクリプトとか。
異機種間で共有できなければそもそもconfigureの目的を果たせない。
0231名無しさん@お腹いっぱい。2007/09/30(日) 09:33:00
また宗教論争かyo

>>230
configureスクリプトはautomake/autoconfに吐かせる(つまり自分では書かない)
のが普通でしょう
手書きしないのは、それが一種の黒魔術でありバッドノウハウのカタマリであるから、
といっていいんじゃないのかな
0232名無しさん@お腹いっぱい。2007/09/30(日) 13:49:59
>>231
自分でconfigure.inとか書いたことない人?
カスタムルール書こうとすると自分でシェルスクリプト(+m4)書かなきゃ
いけないんですけど。
んでその断片がLinux依存になってたりすることもままある。
0233名無しさん@お腹いっぱい。2007/09/30(日) 14:25:45
>>232
あなたのその見解が、何故>>231への反論になりえるのかが理解できない。

汚い泥仕事は自動化したい・最小化したいが
完全に自動化できない場合があるからその場合は仕方なく泥仕事を
自分でやる必要がある、というだけのことでしょう。

それが泥仕事であることの否定にはなっていませんよ。
02342332007/09/30(日) 14:28:54
ああ、ちょっと俺のほうが言ってることがおかしいか。

問題はポータブルなスクリプトを書くのが泥仕事であるかどうかではなく、
そういう必要性があるかどうか、の話だったね。

それなら、ある人にとってはあるでしょうし、無い人にとってはないでしょう。
TPOをわきまえずに常にポータブルに書けというのはナンセンスだと思いますが。
0235名無しさん@お腹いっぱい。2007/09/30(日) 14:35:50
>>233
それをSolarisやNEWS-OSで動かないと文句言ってる奴に言ってやれ。
0236名無しさん@お腹いっぱい。2007/09/30(日) 14:38:11
まあ何だ、わけの分からない先人の遺産をひきついで移植にヒイヒイいった
経験のある老害の愚痴なんだろうから
そっとスルーしといてやれ
0237名無しさん@お腹いっぱい。2007/10/01(月) 13:17:21
POSIXLY_CORRECT=true; export POSIXLY_CORRECT
0238名無しさん@お腹いっぱい。2007/10/01(月) 14:32:13
POSIXLY_CORRECT=true にセットしても、実際にはほとんど何も変わらない(解決にならない)よ。
0239名無しさん@お腹いっぱい。2007/10/01(月) 19:13:07
相対パスを絶対パスに変換する方法はありますでしょうか?

cd /usr/
FULL_PATH=`getfullpath "A/B"`
echo $FULL_PATH

で /usr/A/B を出力、といったようなことがしたいのです
0240名無しさん@お腹いっぱい。2007/10/01(月) 19:36:12
PWD=`pwd`
FULL_PATH=$PWD/"A/B"
.とか..とかあったら知らんが絶対パスには違いない。
0241名無しさん@お腹いっぱい。2007/10/01(月) 20:01:24
>>240
単に `pwd` だと、シェルによってはシンボリックリンクを解決しないPATHを返してしまう。
`/bin/pwd` にした方が良い。シェルによっては `pwd -P`も使える。
0242名無しさん@お腹いっぱい。2007/10/01(月) 21:34:34
getfullpath()
(
cd ${1%/*} && echo `/bin/pwd`/${1##*/}
)
0243名無しさん@お腹いっぱい。2007/10/01(月) 22:14:03
だからぁ、%% ## の類は Bourneじゃ使えないんだって。
dirname basenameあるんだからそれ使えよ。
0244名無しさん@お腹いっぱい。2007/10/01(月) 23:13:12
断る。
0245名無しさん@お腹いっぱい。2007/10/01(月) 23:15:26
というか、realpath っていうそのものずばりのコマンドあるじゃんw
0246名無しさん@お腹いっぱい。2007/10/01(月) 23:27:38
俺のNEWS-OSに入ってないようなOS依存のコマンドは禁止
02472392007/10/01(月) 23:39:15
レスありがとうございます

環境はMac OS Xですがrealpathはコマンドラインとしてはないようです(関数はある)

pwdでも良さげですがpwdが返すパスは必ず/で終わっていない、という保証もなさそうで
ちょっと不安なので、自分でrealpathのような事をするツールを作る事にします。
0248名無しさん@お腹いっぱい。2007/10/01(月) 23:45:16
>>247
pwdが返すpathは、/ディレクトリ以外は / では終らないよ。

だから、`pwd`/A/B とする場合に、/ に居る場合のみ、
pwdの結果の単独の / を取り除く処理が要るね。
0249名無しさん@お腹いっぱい。2007/10/01(月) 23:46:18
ご教示ください。
変数Aの中を、キーワード検索するには、どうすれば
よいでしょうか。たとえば、/usr があるかどうかを検索
したい場合、キーワードはランダムな位置にある。

A="aaaaa /usr bbb 789 ccc"
       ↑キーワード
0250名無しさん@お腹いっぱい。2007/10/01(月) 23:48:51
>>246
GK乙
0251名無しさん@お腹いっぱい。2007/10/01(月) 23:49:21
>>249
普通に、

case $A in */usr*) /usrがあった場合の処理;; esac
0252名無しさん@お腹いっぱい。2007/10/01(月) 23:53:47
>>251
どうも、ありがとうございます。ちょっと実現に向けてがんばってみます。
0253名無しさん@お腹いっぱい。2007/10/02(火) 01:36:48
ご教示ください。

aaaa,bbbb
bbbb,cccc
aaaa,cccc
bbbb.aaaa
aaaa,dddd
bbbb,eeee

こんな感じにならんでいるものを

aaaa,bbbb
aaaa,cccc
aaaa,dddd
bbbb,cccc
bbbb,aaaa
bbbb,eeee

と並べ替えたいのですが、どうやればいいでしょうか。
0254名無しさん@お腹いっぱい。2007/10/02(火) 01:44:11
>>253
普通に sort の -k あたり使えばいいんじゃね?
man sort 参照。
0255名無しさん@お腹いっぱい。2007/10/02(火) 01:47:32
>>254
すみません。書いた後気がつきました^^;
お手数かけました。
0256名無しさん@お腹いっぱい。2007/10/03(水) 00:07:24
教えてください。
標準出力をif文の制御をパイプでつなぎたいですが、
下記の例で、if文の制御で可能でしょうか、だめの場合は、
別な方法はあるでしょうか。

例:
if [[ $? -nq 0 ]]; then
ls -x |
else
cat /etc/hosts |
fi
while read line
do
:

0257名無しさん@お腹いっぱい。2007/10/03(水) 00:29:38
日本語でおkだが、

if [[ $? -nq 0 ]]; then
ls -x
else
cat /etc/hosts
fi |
0258名無しさん@お腹いっぱい。2007/10/03(水) 00:33:08
>>257
どうもありがとうございます。やってみます。
0259名無しさん@お腹いっぱい。2007/10/03(水) 01:40:42
[[ ]]ってなんだよ。
0260名無しさん@お腹いっぱい。2007/10/03(水) 01:44:11
bash は犬板へ
0261名無しさん@お腹いっぱい。2007/10/03(水) 01:48:58
大阪にみえた。もう寝よう。
0262名無しさん@お腹いっぱい。2007/10/03(水) 07:35:15
[[ ]] も POSIXでは OKだよ。bashじゃない。
でも、bourneで使えないから、[[ ]] は普通使うべきじゃない。
## %% を使うべきじゃないのと同じ。
0263名無しさん@お腹いっぱい。2007/10/03(水) 08:03:05
俺的には
-nq
のほうが引っかかるのだが、
何でみんなスルーするのだ?
0264名無しさん@お腹いっぱい。2007/10/03(水) 20:38:08
申し訳ないです。

then節またはelse節がエラーになった場合、
標準出力をパイプに渡したくないするのに、よい方法
はあるでしょうか。エラーがあった場合は、メッセージ
を出したexitするようなことはできないでしょうか。


if [ $? -nq 0 ]; then
 ls -x      ← エラーがあった場合
else
 cat /etc/hosts ← エラーがあった場合
fi |
while read line
do
:
0265名無しさん@お腹いっぱい。2007/10/03(水) 20:42:50
>>264
エラーがあった場合、

echo 'エラーメッセージ' 1>&2
exit

とすればいいだけ。標準エラー出力に出るので、
パイプには渡されない。


-nq はいい加減に直せよ
0266名無しさん@お腹いっぱい。2007/10/03(水) 21:14:47
>>265
-nq を -ne に修正します。

ようわからないのですが、
正常ケースだと、echoで指定したメッセージが渡されて
しまいそうなんですが。
0267名無しさん@お腹いっぱい。2007/10/03(水) 21:31:46
>>266
正常ケースについては言っていない。

エラーが出た場合のエラーメッセージの出し方を言っているのだが。

もしかして、$? での判断の方法とか知らないの?
0268名無しさん@お腹いっぱい。2007/10/04(木) 00:38:55
パイプの前に||を入れて、{}かなんかで>265のを囲う。みたいな?
0269名無しさん@お腹いっぱい。2007/10/04(木) 03:16:20
>>268
パイプの前で exit してもスクリプト自体は終了しないから
>>265 を入れてもあまり意味が無いんじゃね?
0270名無しさん@お腹いっぱい。2007/10/04(木) 06:46:06
>>269
while read で、パイプから読もうとしているから、
broken pipe で終了するよ。

もし、パイプの先が標準入力(=パイプ)を読まないコマンドばかりだったら
確かにすぐには終了しないけどね。

よって、>>265 で正解。
0271名無しさん@お腹いっぱい。2007/10/04(木) 20:53:04
すみません。基本的なことかも知れませんが、
シェルを書く時、まず最初の方で、
#!/bin/sh みたいに、シェルをインクルードしますよね。
でも、この前インクルードしなくても動いてしまったんですよ。
結局インクルードは必要ないんでしょうか?
Cで、printf()を使う程度だったら<stdio.h>を
インクルードしなくていいのと同じですか?
0272名無しさん@お腹いっぱい。2007/10/04(木) 21:42:37
>>271
シェルスクリプト総合 その4
http://pc10.2ch.net/test/read.cgi/unix/1131026501/33-

http://www.bookshelf.jp/2ch/unix/1131026501.html
0273名無しさん@お腹いっぱい。2007/10/05(金) 08:31:25
シェルをインクルードとはまた新しい概念だな。
0274名無しさん@お腹いっぱい。2007/10/05(金) 08:54:33
インクルード=オマジナイ
0275名無しさん@お腹いっぱい。2007/10/05(金) 09:09:24
.はインクルードって言っていい?
0276名無しさん@お腹いっぱい。2007/10/05(金) 15:53:06
そっちかよ
0277名無しさん@お腹いっぱい。2007/10/07(日) 15:08:28
説明が難しいのですが

a=hoge
b=a

こういう時

echo "$b"
↓b=aなので
echo "$a"
↓a=hogeなので
hoge

みたいな処理をしたいのですができますでしょうか?
0278名無しさん@お腹いっぱい。2007/10/07(日) 15:21:34
eval echo \$$b
■ このスレッドは過去ログ倉庫に格納されています