1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/ Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/ Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/ Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
577 名前:login:Penguin mailto:sage [2010/02/26(金) 00:29:09 ID:C/OfvsKM] まず、なぜ不可能だと考えたのか、そこから聞こうか。
578 名前:login:Penguin mailto:sage [2010/02/26(金) 00:37:26 ID:DYTaEvQS] 今実行中のファイルを操作するってのがいけないことなのかなぁと…
579 名前:login:Penguin mailto:sage [2010/02/26(金) 00:39:36 ID:dGd2Emr5] 自身のunlinkすら可能だというに
580 名前:login:Penguin mailto:sage [2010/02/26(金) 00:56:31 ID:7suOgZ+f] アップロードどころか実行中のスクリプトを編集することもできるよー
581 名前:login:Penguin [2010/02/26(金) 21:44:10 ID:ZUmR/bTp] 以下の結果を出力するスクリプトを,UNIXシェルで書け. (基本仕様) ・コマンドとして実行できる.(UNIXシェルである.) ・主人公、妹1名、両親、自分の友人数名(うち最低1名は女性、半数以上は男性とする)、妹の友人(女性)数名が登場する. ・主人公、妹、自分の友人、妹の友人はいずれも生徒もしくは学生とする. ・両親のうち、父は総合商社勤務のサラリーマン、母は専業主婦とする. ・主人公の言動やイベントの発生にともない、各キャラのパラメータを変化させる. ・病弱な妹を思いやる兄と妹の交流を中心に、他の登場人物との友情や恋愛を描写する. ・エンディングは妹、もしくは妹の友人のいずれかと深い恋愛関係になるか、誰とも親密に慣れないバッドエンディングになるようにする. ・妹と恋愛関係が深まる場合、病弱な妹への思いやりが徐々に、自然に恋愛感情へ変化するように描写する. ・ゲームの操作方法はコマンド選択式またはコマンド入力式とする. ・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと. (ポイント) ☆UNIXシェルにするには,ファイルの最初に #!/bin/bashというおまじないを書く. ☆コマンド選択方式のゲームにする場合、select文を使用できる。 ☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとお願いします
582 名前:login:Penguin mailto:sage [2010/02/26(金) 21:49:36 ID:ueeczQLj] さようなら
583 名前:login:Penguin mailto:sage [2010/02/26(金) 22:36:07 ID:PyskErwP] >>581 UNIXシェルってなんだ?
584 名前:login:Penguin mailto:sage [2010/02/26(金) 22:53:51 ID:nq/ujwuR] >>581 いろいろ拡張されてきたなw
585 名前:login:Penguin mailto:sage [2010/02/26(金) 23:01:55 ID:UQaFhRqQ] 自演ウザス
586 名前:login:Penguin mailto:sage [2010/02/27(土) 08:37:06 ID:dxtkbNS9] 素直にワラタ
587 名前:login:Penguin [2010/02/28(日) 01:11:29 ID:oz3AO1O4] シェルスクリプトとVBA、どちらが簡単ですか?
588 名前:login:Penguin mailto:sage [2010/02/28(日) 01:13:35 ID:XA1Dii88] シェルスクリプト
589 名前:login:Penguin mailto:sage [2010/02/28(日) 01:20:34 ID:oz3AO1O4] >>588 シェルスクリプトと比較して、VBAはどこがどんな風に難しいのでしょうか?
590 名前:login:Penguin mailto:sage [2010/02/28(日) 01:37:41 ID:XA1Dii88] 用途が全然違う VBA=MS製品の補助、高度なことやろうと思ったらVBの型とか定数とかメソッドとかプログラミング言語として覚えないといけない シェルスクリプト=普段から使っているコマンド郡の応用、データの流れとアルゴリズムさえ判れば外部プログラム呼び出して何でも出来る
591 名前:login:Penguin mailto:sage [2010/02/28(日) 01:52:34 ID:oz3AO1O4] >>590 疑問なのは、なぜアプリケーションの補助がそんなに難しいのか、 もっと簡単にできなかったのか、それでは普通の人に使えないのではないか、 という点です。 Linuxで表計算っぽいことができる言語というとawkがありますけど、 あれくらい簡単だったら誰でも使えると思うのですが。 マクロ言語がエンドユーザ言語として使われるためには簡単でなければならないはず。 それなのにシェルスクリプトより難しいというのは、その目的にそぐわないような気がするのですが。
592 名前:login:Penguin mailto:sage [2010/02/28(日) 01:55:02 ID:C3UADE41] VBAの質問ならよその板でやっとくれ。
593 名前:login:Penguin mailto:sage [2010/02/28(日) 01:56:36 ID:oz3AO1O4] >>592 VBAについて知りたいというよりも、 シェルスクリプトとVBAの違いというか、 際立った特徴のようなものがあれば、それを知りたいんです。
594 名前:login:Penguin mailto:sage [2010/02/28(日) 02:06:41 ID:B/kw3N2G] >>593 そもそも活用シーンが全然違うのに比較してどうする。根本が間違っている。 比較するならWSHとだろう。
595 名前:login:Penguin mailto:sage [2010/02/28(日) 02:12:43 ID:oz3AO1O4] >>594 WSHもWindows PowerShellも エンドユーザにはあまり受け容れられていないように見受けられます。 Linux/UNIX/MacOSXのエンドユーザでもスクリプトを全く書かない人はいますが、 Windowsよりはそういう人が少ないと思います。 単純にWindowsのほうがヘビーユーザ率が低いというもあるでしょうが、 それだけでなく、Windowsで使われるそれらの言語が そもそもエンドユーザに適さない欠点を有しているからではないのでしょうか? とすると、逆にシェルスクリプトはどういう点でそれらより優れているのでしょうか?
596 名前:login:Penguin mailto:sage [2010/02/28(日) 02:20:34 ID:B/kw3N2G] >>595 だからさー比較する前提条件が間違っている。
597 名前:login:Penguin mailto:sage [2010/02/28(日) 02:24:04 ID:oz3AO1O4] >>596 WSHと比較するようにアドバイスされたので、そうしたのですが。
598 名前:login:Penguin mailto:sage [2010/02/28(日) 02:31:01 ID:v9A/VFIk] シェルスクリプトと比較するべきはバッチファイル。 君の質問は「バッチファイルとVBA、どちらが簡単ですか?」という事になるから この板で聞く事じゃない。
599 名前:login:Penguin mailto:sage [2010/02/28(日) 02:33:03 ID:oz3AO1O4] >>598 バッチファイルなんて論外でしょう。 あれとシェルスクリプトを一緒にするのはやめましょう。
600 名前:login:Penguin mailto:sage [2010/02/28(日) 02:43:10 ID:v9A/VFIk] VBAと一口に言ってもWord、Excel、Access、Outlook…全然違うぞ?
601 名前:login:Penguin mailto:sage [2010/02/28(日) 02:44:34 ID:B/kw3N2G] っていうかスレチ。 いちいちageているし、これ以上続けるならレス乞食とみなしてあぼーんする。 くだ質いけ。
602 名前:login:Penguin mailto:sage [2010/02/28(日) 02:47:24 ID:C3UADE41] くだ質に来られても困るな。 ム板にでも行ってくれ。
603 名前:login:Penguin mailto:sage [2010/02/28(日) 02:52:42 ID:oz3AO1O4] WSH(VBScript)で「C:\TechEzo\Round23.txt」内の「ようこそ」を含む行を表示する Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set tempFile = fso.OpenTextFile("C:\TechEzo\Round23.txt") regEx.Pattern = "ようこそ" Do Until tempFile.AtEndOfStream tempLine = tempFile.ReadLine If regEx.Test(tempLine) Then WScript.Echo tempLine End If Loop これを見て「オブジェクト指向だから素晴らしい」とか 「シェルスクリプトに比べて簡単」とか思う人はいないでしょう。 管理者や一般のエンドユーザなど、ノンプログラマも使う言語を こんなふうに設計したMSは頭が悪いとしか思えないです。
604 名前:login:Penguin mailto:sage [2010/02/28(日) 03:01:02 ID:SsRM0ruv] マルチ相手によーやるな
605 名前:login:Penguin mailto:sage [2010/02/28(日) 09:04:34 ID:JCw0fVKj] >>603 Window Power Shellもしかり。ちょい使いするには厳格すぎる。 あまりハードルを下げるとMS専門鯖管にスキルが付いてLinuxに行っちゃうからじゃね?
606 名前:login:Penguin mailto:sage [2010/02/28(日) 11:13:46 ID:ZpjvZrys] 指定したディレクトリ以下を再帰的に検索して 同じディレクトリに大文字小文字違いでファイル名が重複して存在してた場合 例) ABC.txt abc.txt abc.TXT どれか一つ(どれでもいい)を残してあと消去するってのをやりたいけどどうやんの
607 名前:login:Penguin mailto:sage [2010/02/28(日) 11:15:22 ID:wBfYi/JJ] >>603 見たら、ハードル高くしたらむしろ出来る奴こそLinuxに行ってしまいそうにオモタ
608 名前:login:Penguin mailto:sage [2010/02/28(日) 11:57:18 ID:C3UADE41] >>606 perl か何かで書いた方が楽じゃないかな。
609 名前:login:Penguin [2010/02/28(日) 11:58:42 ID:qTqfFliX] >>606 $ find /tmp/hoge* -type f /tmp/hoge1/ABC.txt /tmp/hoge1/abc.TXT /tmp/hoge1/abc.txt /tmp/hoge1/a b c.txT /tmp/hoge1/a b c.txt /tmp/hoge2/ABC.TXT /tmp/hoge2/ABC.txt /tmp/hoge2/DEF.txt $ find /tmp -type f | uniq -i -d -D --all-repeated=prepend | perl -00 -a -F'\n' -ne '{foreach $i (1..$#F){print "$F[$i]\n";}}' /tmp/hoge1/abc.TXT /tmp/hoge1/abc.txt /tmp/hoge1/a b c.txt /tmp/hoge2/ABC.txt ディレクトリの大文字小文字違いは考えてない。
610 名前:login:Penguin mailto:sage [2010/02/28(日) 14:28:15 ID:oz3AO1O4] >>609 それって答になってるの? ただ表示させてるだけじゃん。 表示させるだけならもっと楽な方法あるし。 $ ls -R .: ABC.txt Aca.TXT abc.Txt sample.sh test2 ./test2: ABC.txt Aca.TXT abc.Txt test3 ./test2/test3: DDD.TXT aBc.tXt $ find ./* -type f | grep -i 'abc.txt' ./ABC.txt ./abc.Txt ./test2/abc.Txt ./test2/ABC.txt ./test2/test3/aBc.tXt $ find ./* -type f | grep -i 'abc.txt' | uniq -i ./ABC.txt ./test2/abc.Txt ./test2/test3/aBc.tXt
611 名前:login:Penguin [2010/02/28(日) 14:46:18 ID:qTqfFliX] >>609 では、重複を探して、最初のを除いて、2つめ以降を出力してる。 この出方を>>606 の評価基準で見てもらい、不満なければ、 あと xargs rm につなぐ程度で済むべ。 >>610 の例だと、それは全部消していいものなの?
612 名前:login:Penguin [2010/02/28(日) 14:52:31 ID:qTqfFliX] もちろん>>609 が最適解だなんて思ってないんだけど、 >>610 のやり方だと、abc.txt って人が与えてるよね。何百個かある時はどうするの?
613 名前:login:Penguin [2010/02/28(日) 15:10:05 ID:qTqfFliX] ちょっと修正する。 $ find /tmp -type f | sort -f | uniq -i -d --all-repeated=prepend | perl -00 -a -F'\n' -ne '{shift @F; print join("\0",(@F,""));}' | xargs -0 ls -l 大丈夫そうなら最後の ls -l を rm に変更で。
614 名前:login:Penguin mailto:sage [2010/02/28(日) 15:41:09 ID:oz3AO1O4] A="" find . -type f | sort -f \ | while read F; do P=`echo "$F" | tr '[A-Z]' '[a-z]'` Q=`echo "$A" | tr '[A-Z]' '[a-z]'` if [ "$P" == "$Q" ] then echo "${F}を削除" # eval rm "$F" fi A="$F" done
615 名前:login:Penguin mailto:sage [2010/02/28(日) 15:47:27 ID:oz3AO1O4] すまん、evalはなくても動く。
616 名前:login:Penguin mailto:sage [2010/02/28(日) 15:59:45 ID:0w7cauqm] >>606 が良ければなんでもいいでしょうに
617 名前:login:Penguin [2010/02/28(日) 16:00:23 ID:diBS8T6m] >>614 いかにもシェルスクリプトらしい解決法だね perl使うほうがメンドイ
618 名前:login:Penguin [2010/02/28(日) 16:32:44 ID:qTqfFliX] 感心しました。なるほど、うまいですね。 僭越ながら少し手を入れてみました。(sh 対応、外部コマンド実行回数減らす) #!/bin/sh A="" Q="" find . -type f | sort -f \ | while read F; do P=`echo "$F" | tr '[:upper:]' '[:lower:]'` if [ "$P" = "$Q" ]; then echo "${F}を削除" # rm "$F" fi A="$F" Q="$P" done
619 名前:login:Penguin mailto:sage [2010/02/28(日) 19:19:20 ID:ZpjvZrys] 勉強になります
620 名前:login:Penguin mailto:sage [2010/02/28(日) 19:46:12 ID:v9A/VFIk] 別ディレクトリになった時 Q="" しなくていいの?
621 名前:login:Penguin [2010/02/28(日) 20:01:15 ID:qTqfFliX] >>620 >>609 で楽するためディレクトリの大文字小文字は考えないことにしたんだけど、 d/abc.txt と D/abc.txt を同一視しちゃってるので、本当ならダメ、なんでしょう。 find . -type d するループを外側につけるか、 ディレクトリ名見る if をつければ直せそう。改修頼みます >>620
622 名前:login:Penguin mailto:sage [2010/02/28(日) 20:11:12 ID:0w7cauqm] だからそういうのは>>606 が決めることだって。勉強になります、じゃなかろうに
623 名前:login:Penguin mailto:sage [2010/02/28(日) 20:50:11 ID:v9A/VFIk] #!/bin/sh A="." find ./dir -type f | sort -f | \ while read F; do P=`dirname $F`/`basename $F | tr '[A-Z]' '[a-z]'` Q=`dirname $A`/`basename $A | tr '[A-Z]' '[a-z]'` if [ $P = $Q ]; then echo "rm $F" fi A=$F done
624 名前:login:Penguin mailto:sage [2010/02/28(日) 22:25:55 ID:v9A/VFIk] 書き直したので貼り直しますね。 #!/bin/sh B="!" find . -type f | sort -f | \ while read F; do T="`dirname $F`/`basename $F | tr '[A-Z]' '[a-z]'`" if [ $T = $B ]; then echo "rm $F" fi B=$T done
625 名前:login:Penguin mailto:sage [2010/02/28(日) 22:43:51 ID:oz3AO1O4] >>624 スペースを含むディレクトリ作って実行してみ。
626 名前:login:Penguin mailto:sage [2010/02/28(日) 23:06:54 ID:v9A/VFIk] Windowsじゃあるまいし。
627 名前:login:Penguin mailto:sage [2010/02/28(日) 23:09:17 ID:Z6hm/tn2] 空白や日本語を許すかで世代間のギャップが存在するなw
628 名前:login:Penguin mailto:sage [2010/02/28(日) 23:11:07 ID:0w7cauqm] 用件的にsamba絡みと予想してたけどね。知らんけど
629 名前:login:Penguin mailto:sage [2010/02/28(日) 23:13:21 ID:1hHY9Dv5] linuxでフォルダ名に空白入れることはないな、色々面倒だし
630 名前:login:Penguin mailto:sage [2010/02/28(日) 23:15:53 ID:oz3AO1O4] >>626 シェル変数参照の際、値に含まれるスペースや*などの パス名展開の文字が解釈されてしまうのを防ぐため、 ダブルクオートで囲むのは常識。 Windowsじゃないとかいう問題ではなく、 シェルスクリプトを書く際の常識。
631 名前:login:Penguin mailto:sage [2010/02/28(日) 23:50:39 ID:fdN9Zkx+] カラだったときエラーになっちゃうしね
632 名前:login:Penguin mailto:sage [2010/02/28(日) 23:53:35 ID:v9A/VFIk] わかった。わかった。次回からそうするよ。
633 名前:login:Penguin mailto:sage [2010/03/01(月) 00:59:23 ID:IaBmVUuE] >>610 >ただ表示させてるだけじゃん。 findでヒットした結果には任意のコマンドを適用可能。 馬鹿か?
634 名前:login:Penguin mailto:sage [2010/03/01(月) 01:09:07 ID:6uFj7AQh] 俺は>>628 だからそもそもどうでもいいけど、それかなりどーでもいいぞ
635 名前:login:Penguin mailto:sage [2010/03/01(月) 01:09:42 ID:QTdHsVxq] >>606 ファイル名を全部小文字に変えて、重複してたら上書きされて結果的に一つ残る。 ってやり方でも出来ると思う。(効率は良くない) こんなスクリプト書いて /home/hoge/script/RENAME_lower.sh とか名前付けて chmod +x しておく。 #!/bin/bash START_DIR="`pwd`" while (test -n "${1}") ; do if [ -d "${1}" ] ; then cd "${1}" && ( pwd ; ls for i in *\.[Tt][Xx][Tt] ; do if [ -f "${i}" ] ; then mv "${i}" "`echo ${i} | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/`" fi done ) fi shift cd "${START_DIR}" done ディレクトリを find とかで検索して RENAME_lower.sh で処理。 $ find . -type d -exec /home/hoge/script/RENAME_lower.sh {} \+
636 名前:login:Penguin mailto:sage [2010/03/04(木) 23:43:06 ID:oO8XEq75] #!/bin/shと#!/bin/bashはどちらがおすすめなの?
637 名前:login:Penguin mailto:sage [2010/03/05(金) 00:16:06 ID:IlIr0pSM] #!/bin/bash
638 名前:login:Penguin mailto:sage [2010/03/05(金) 00:19:11 ID:FZm9BOvl] #!/bin/bashだろjk
639 名前:login:Penguin mailto:sage [2010/03/05(金) 00:56:20 ID:GiIL1sMg] 用途次第。以下はsh ・shで書いても機能・速度が許容範囲で簡単に書ける場合 ・shでないといけない場合(busyboxとか)
640 名前:login:Penguin [2010/03/05(金) 08:08:46 ID:CTq7Tclv] >>5
641 名前:login:Penguin mailto:sage [2010/03/05(金) 08:37:14 ID:GiIL1sMg] そいつはこのスレのお約束+α。YOUのオススメを書きなよ
642 名前:login:Penguin mailto:sage [2010/03/05(金) 09:01:18 ID:lZJ9zNnO] 今どきのディストリなら sh -> bash が当たり前だろ
643 名前:login:Penguin mailto:sage [2010/03/05(金) 09:56:40 ID:y7mY4KkL] 使い捨てなら深く考えずどっちでも OK。 別のマシンでも使うならよく考える。
644 名前:login:Penguin mailto:sage [2010/03/05(金) 10:20:23 ID:8QC8E4i2] >>642 Debian、Ubuntuはdash
645 名前:login:Penguin mailto:sage [2010/03/05(金) 12:02:50 ID:kHG21Qzt] ださw
646 名前:login:Penguin mailto:sage [2010/03/05(金) 14:24:04 ID:ixxT+8DA] >>641 それはUNIX板のシェルスクリプトスレと勘違いして貼られたもん このスレのテンプレじゃあない >>5-10 を見ろ
647 名前:login:Penguin mailto:sage [2010/03/05(金) 15:49:37 ID:D7CZBw7a] bashの構文を使ってれば#!/bin/bash、使ってなくても#!/bin/bash
648 名前:login:Penguin mailto:sage [2010/03/05(金) 22:06:54 ID:1xo9OzwV] おとなもこどもも、おねーさんも#!/bin/bash
649 名前:login:Penguin mailto:sage [2010/03/05(金) 22:38:25 ID:t7X9IkaB] BSD系の人たちはどうすれば?
650 名前:login:Penguin mailto:sage [2010/03/05(金) 22:41:37 ID:IlIr0pSM] 板違いです
651 名前:login:Penguin mailto:sage [2010/03/05(金) 23:39:40 ID:GiIL1sMg] $ sudo -i # cd /bin;\rm -f sh;ln -s bash sh
652 名前:login:Penguin mailto:sage [2010/03/06(土) 00:07:36 ID:z+KgTZo4] >>651 sudo ln -fs bash /bin/sh でいいんじゃね。
653 名前:login:Penguin mailto:sage [2010/03/06(土) 00:53:02 ID:zGIcPUED] コピペはできないようにしたかったから二行 ln -f は嫌い rm -f が好き
654 名前:login:Penguin [2010/03/06(土) 11:13:20 ID:8ckQdz96] ・sh では、while中で代入した変数は、ループから抜けると使えなくなりますか? ・それがPOSIX仕様なら、一時ファイルを作る以外に、よい回避方法はありますか? $ date | while read line; do last="$line"; done; echo "THE LAST: $last" を Debian lenny の dash, bash, ksh で実行した場合、ksh 以外では値が残りません。
655 名前:login:Penguin mailto:sage [2010/03/06(土) 12:21:04 ID:zGIcPUED] POSIX仕様は知らない シェル実装によって違いがあるけどパイプはサブシェルで実行される $ date | (while read line; do last="$line"; done;echo "THE LAST: $last") で回避になるならいいけど $ date | while read line; do last="$line"; done $ echo "THE LAST: $last" ということをしてkshを正解としたいなら一時ファイルくらいしか思いつかない
656 名前:login:Penguin mailto:sage [2010/03/06(土) 19:57:46 ID:vEOUh0ms] dateをパイプでwhileに放り投げる目的は何?
657 名前:login:Penguin mailto:sage [2010/03/06(土) 20:01:13 ID:lSm8LSXx] ただの例題
658 名前:login:Penguin mailto:sage [2010/03/06(土) 20:12:35 ID:zGIcPUED] このスレで質問してるやつはほとんど約1名でただのキチガイだと思ってる 区別ができれば間違いなく回答しないんだけどねぇ
659 名前:login:Penguin mailto:sage [2010/03/06(土) 21:29:26 ID:U6pPRiRF] お前以外は全部俺の自作自演です
660 名前:login:Penguin mailto:sage [2010/03/06(土) 21:38:12 ID:zGIcPUED] 質問者以外はどっちでもいいけど
661 名前:654 [2010/03/06(土) 22:34:04 ID:8ckQdz96] >>655 さん > シェル実装によって違いがあるけどパイプはサブシェルで実行される 勉強になります。 [linux-users:96159] Re: [bash]whileループ内変数値の扱いについて教えてください。 ttp://search.luky.org/linux-users.9/msg06102.html のような、3以上のfdを使う方向でいこうと思います。 ありがとうございました。
662 名前:login:Penguin mailto:sage [2010/03/07(日) 05:39:29 ID:qUDKVagf] 使っているbashの制約事項はどこに書いてある?
663 名前:login:Penguin mailto:sage [2010/03/07(日) 15:21:22 ID:kzHmHVjG] 日本語でおk
664 名前:login:Penguin mailto:sage [2010/03/07(日) 15:50:18 ID:BVZuVuVb] >>662 /usr/share/doc/bash-doc-*/COMPAT かな。
665 名前:login:Penguin mailto:sage [2010/03/07(日) 15:58:04 ID:CtU/xHgd] 俺の認識不足なのかもしれんが dateコマンドを単独で使っても、1行しか出力しなくね? $ date 2010年 3月 7日 日曜日 15:50:25 JST whileにパイプでつなぐ意味がわからん。 もしlsみたく複数行で出力するコマンド実行したならわからなくもないけど、 それなら無理にパイプでwhileにつなぐ必要ないし。 $ ls sample.sh sample2.sh xyz.txt $ for i in `ls`; do X="$i"; done; echo "$i" xyz.txt 別の方法で簡単に解決できることをどうして難しくするのか意味不明。
666 名前:login:Penguin mailto:sage [2010/03/07(日) 16:24:31 ID:/xXz4ARQ] >>665 おまえは質問者の質問意図がわかってない
667 名前:login:Penguin mailto:sage [2010/03/07(日) 16:27:22 ID:CtU/xHgd] >>666 わかるわけない。 whileにパイプでつないでサブシェルになるからどうとか、 そういうので困ったことないから。
668 名前:667 mailto:sage [2010/03/07(日) 16:29:06 ID:CtU/xHgd] っていうか、 実用上、それをどうしても使わないと書けないものなんてあるの? 例を示せるなら示してほしいもんだね。
669 名前:login:Penguin mailto:sage [2010/03/07(日) 16:31:06 ID:lFJTxoe3] おい、誰かこの馬鹿をつまみだせ
670 名前:login:Penguin mailto:sage [2010/03/07(日) 16:33:48 ID:CtU/xHgd] >>669 だから、実用上どういう意味があるのか教えてくれれば 言われなくても出ていくけど。
671 名前:login:Penguin mailto:sage [2010/03/07(日) 16:42:38 ID:lFJTxoe3] 変数の扱い方が知りたかっただけろ。 例としてとりあえず適当に思いついたdateを使ったんだろう。 ただの一例なんだから実用上は別に意味ない。
672 名前:667 mailto:sage [2010/03/07(日) 16:47:13 ID:CtU/xHgd] catコマンドを使ってファイルの中身を出力してパイプでwhileにつないだとか、 そういうのならわかるんだがな。 もっとも、その程度ならパイプ使わないで書けばいいだけだが。 だから、どんなことをキッカケにそんな質問が出てきたのかよくわからん。 まぁ、興味本位で意味のないことする人ってのもいるんだろうけどさ。 ガソリン車に灯油を入れてみるとか、 トラックでレールの上を走ってみるとか。 俺から見ると、そういう変人と同レベルの質問に見えるのさ。
673 名前:login:Penguin mailto:sage [2010/03/07(日) 18:49:32 ID:kzHmHVjG] (キリッ
674 名前:login:Penguin mailto:sage [2010/03/07(日) 18:57:12 ID:T97Hz24h] 頭の中でdateを適当なものに置き換えればいいだけじゃん。 質問する上での便宜かもしれないってのに いちいち突っ掛かってくるヤツってなんなの?
675 名前:login:Penguin mailto:sage [2010/03/07(日) 19:44:39 ID:CtU/xHgd] >>674 dateだからダメとかだけじゃなく、それ以前に変な質問だろ。 >>654 の >それがPOSIX仕様なら、一時ファイルを作る以外に、よい回避方法はありますか? に対する答は「パイプを使うな」。 >>661 の >3以上のfdを使う方向でいこうと思います。 に対しては「他に手段がないならさておいて・・・正気か?」。
676 名前:login:Penguin mailto:sage [2010/03/07(日) 22:20:17 ID:EI1vZsn/] だから、お前はそもそもまともなスクリプトも書けないのに、容喙せんでいい。
677 名前:login:Penguin [2010/03/07(日) 23:06:32 ID:qcuqADXg] >>676 あれほどアホな質問しない程度には書けるが。 質問者が何をやろうとしてるか知らんが 意地でもパイプでwhileに投げて実現しようとしてんだろ? まともな神経してたら別の方法でやるのにさ。 っていうか、質問者を擁護してる君も質問者みたいな書き方すんの? 合理性を考えたほうがいいよ。