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 あたりに色々と。
509 名前:初心者 mailto:zzhong33@yahoo.co.jp [2010/01/13(水) 23:30:52 ID:9IUNZoL1] run.shファイルの中で、script_file.shをsourceした場合。 sourceされているscript_fileの中でscript_file自身の絶対パスを得る方法を調べています。 bashの場合はscript_fileの中で$BASH_SOURCEから得られるが、他のシェル(zsh/tcsh/ksh)でscript_file.shのパスを得られる方法を 教えていただけませんか? >>>>>>>>>>>>>>>>>>>>>> script_file.shファイルのある場所 /path/to/script_file.sh >>>>>>>>>>>>>>>>>>>>>> 実行例: %./run.sh 期待結果: /path/to/ ファイル <run.sh>の中身 ------------- #!/bin/(sh/zsh/tcsh...) source $path/script_file.sh ------------- ファイル script_file: ------------- script_file_path=`******` echo $script_file_path; -------------
510 名前:login:Penguin mailto:sage [2010/01/13(水) 23:53:55 ID:rEuhDc/f] >>509 機能知らない分際で答えるとさ 単純に呼ぶんだからさ source "$path/script_file.sh" "$path/script_file.sh" とか引数として渡してecho $1とかしても できちゃったりはするね
511 名前:login:Penguin mailto:sage [2010/01/13(水) 23:59:57 ID:rEuhDc/f] 期待結果は/path/to/だったかorz ならsource "$path/script_file.sh" "$path" でまぁできるといえばできてるけど
512 名前:login:Penguin mailto:sage [2010/01/14(木) 00:01:40 ID:4xSyV+UX] /が抜けてたねorz
513 名前:login:Penguin mailto:sage [2010/01/14(木) 03:10:55 ID:4xSyV+UX] >>507 気になったので書いてみた >>508 氏が言ってるようにもっと楽にできるんだろうけど ちなみに頭悪いので間違ってる可能性ありと 使い物になってないと思うから 一応動いてるかも程度
514 名前:login:Penguin mailto:sage [2010/01/14(木) 03:12:28 ID:4xSyV+UX] function perror(){ stdout=`mktemp`;stdout2=`mktemp` first=on until test 1 -eq $# #引数一個の場合は何もしないので注意 do if test $first = on then first=off $1 1>$stdout 2>/dev/null judge=$? fi if test $judge -eq 0 then if ! test 2 -eq $# then $2<$stdout 1>$stdout2 2>/dev/null judge=$? shift else #最後は標準出力へ $2<$stdout #最後のcommandの失敗は判定してないので注意 shift fi else echo "$1" error 1>&2 break fi stdout_hold=$stdout # 入れ替え stdout=$stdout2 stdout2=$stdout_hold done rm $stdout $stdout2;unset stdout stdout2 stdout_hold first judge }
515 名前:login:Penguin mailto:sage [2010/01/14(木) 03:15:58 ID:4xSyV+UX] perror 'ls /usr/bin' 'sed 's/^/test/g'' 'grep gcc' less perror 'ls /usr/bin' 'sed 's/^/test/g'' 'tar xf' less まぁ一応動いてるのかな!?
516 名前:login:Penguin mailto:sage [2010/01/14(木) 17:27:09 ID:FVM4x3d9] sed -e '$-3,$d' file とすると sed: -e expression #1, char 2: unknown command: `-' というエラーがでます。 versionは4.1.5ですが上記の使い方間違ってますか?
517 名前:login:Penguin mailto:sage [2010/01/14(木) 17:55:26 ID:EAAIjJ3h] vi じゃないんだからそんな指定できないよ
518 名前:login:Penguin mailto:sage [2010/01/14(木) 22:28:16 ID:dyjWaACs] >>507 エラーが起こったかどうか *見えればいい* ってだけならこんなやりかたも。 (com1 ; echo $?>/tmp/test.log) | (com2 ; echo $?>>/tmp/test.log) | 略 (com1 ; xmessage com1:$?&) | (com2 ; xmessage com2:$?&) | 略
519 名前:login:Penguin mailto:sage [2010/01/15(金) 09:27:35 ID:vHlv+w15] >>516 つhead -n -4 file
520 名前:login:Penguin mailto:sage [2010/01/15(金) 10:37:34 ID:0e3bcUwp] >>519 -nの値に負の数を与えられるんですね。
521 名前:login:Penguin mailto:sage [2010/01/15(金) 11:44:19 ID:exz65txq] ダブルクォーテーションで囲まれた文字列を抜き出すってどうやればいいんだ? cutでもexprでも俺には無理だった、絶対サクッとできるはずなのに悔しすぎる…
522 名前:login:Penguin mailto:sage [2010/01/15(金) 12:29:58 ID:n61dnfY7] grep -o '"[^"]*"'
523 名前:login:Penguin mailto:sage [2010/01/15(金) 13:14:40 ID:exz65txq] >>522 今日一日崇めさせてくれ
524 名前:login:Penguin mailto:sage [2010/01/15(金) 20:34:53 ID:cwTkNqT3] 1日限定かい。
525 名前:login:Penguin mailto:sage [2010/02/07(日) 15:35:53 ID:lbKDrfi6] $ df -h /tmp Filesystem Size Used Avail Use% マウント位置 tempfs 512M 89M 424M 18% /tmp の%の前の数字(ここでは18)だけ取り出したいんだけど、どうすればよいですか?
526 名前:login:Penguin mailto:sage [2010/02/07(日) 15:58:04 ID:vkq5/P4Z] awk使う
527 名前:login:Penguin mailto:sage [2010/02/07(日) 16:03:00 ID:U7v7s3zM] とても安直な方法なので最適解には程遠いと思いますが df -P /tmp | grep '/tmp$' | awk '{print $5;}' | sed 's/%$//'
528 名前:login:Penguin mailto:sage [2010/02/07(日) 16:06:14 ID:lbKDrfi6] >>526 ,527 ありがとう。
529 名前:526 mailto:sage [2010/02/07(日) 19:06:47 ID:dchTEc3Z] >>527 おまwww df -h /tmp | awk '/\/tmp/ { print gensub("%", "", "", $5) }'
530 名前:login:Penguin mailto:sage [2010/02/07(日) 19:16:50 ID:U7v7s3zM] いやそれくらい知ってる
531 名前:login:Penguin mailto:sage [2010/02/07(日) 19:30:22 ID:Fd1qGpin] 複数行のキーワードをfgrepする手はないスか? キーワードの行数は不定。以下例では仮に2行とします。 $ cat -n text 1 abcdefg******* 2 [hijklmn-z] 3 abcdefg******* $ fgrep 'abcdefg*******なんとか[hijklmn-z]' text text:1:abcdefg******* text:2:[hijklmn-z] 1と2行目のペアはヒットするが、3行目がヒットしてはいけない。
532 名前:531 mailto:sage [2010/02/07(日) 19:32:00 ID:Fd1qGpin] ああっと。 上の検索コマンドはgrepファミリーでなくても良いですが、perlは駄目です。
533 名前:login:Penguin mailto:sage [2010/02/07(日) 19:58:16 ID:KEZIcPfj] 宿題は自分でやれよ
534 名前:login:Penguin mailto:sage [2010/02/07(日) 21:03:26 ID:U7v7s3zM] #!/bin/bash AWKFILE="/tmp/$0.$$" trap "rm -f ${AWKFILE}" 0 KV=0 echo "BEGIN{s=0;h=\"\"};" > "${AWKFILE}" for keyword in $*; do echo "/${keyword}/{if (s==${KV}){s=s+1;h=h NR \"\\t\" \$0 \"\\n\";} else {s=0;h=\"\"}};" KV=`expr ${KV} + 1` done >> "${AWKFILE}" echo "{if (s==$#){print h;s=0;h=\"\";}};" >> "${AWKFILE}" awk -f "${AWKFILE}"
535 名前:login:Penguin mailto:sage [2010/02/07(日) 21:24:02 ID:U7v7s3zM] いろいろ残念な部分があるけど、そこは使う人が直してね
536 名前:login:Penguin mailto:sage [2010/02/07(日) 21:36:26 ID:5ZhdKpPZ] >>534 んー。やっぱりスクリプト生成みたいになりますか。 私以外の人が考えてもすっきり行かない事が解りました。ありがとうございます。 >>533 この手の宿題を出す学校はあまり無いんじゃないかな。
537 名前:login:Penguin mailto:sage [2010/02/07(日) 21:41:15 ID:U7v7s3zM] 自分でできない部分だけ聞きなよ
538 名前:login:Penguin mailto:sage [2010/02/07(日) 21:51:00 ID:UYJWIskO] >>536 質問に答えようとしてない奴の発言にはいちいち反応するな。 「教えてくれ」ってやつと「宿題は自分でやれ」ってやつは 「歩み寄る可能性がない」からスルーしたほうがいい。 専ブラ使える環境なら、NGワードに「宿題」って単語を入れておいたほうがいいよ。
539 名前:login:Penguin mailto:sage [2010/02/07(日) 22:05:12 ID:U7v7s3zM] >>531 はいろいろ引っかかる部分があるから正直俺も最初は回答しようかどうか迷ったぞ 返事を聞いて>>538 も出てああやっぱりかと思ったし... と戯言はここまでにしとく
540 名前:login:Penguin mailto:sage [2010/02/07(日) 22:36:33 ID:5ZhdKpPZ] >>537 >自分でできない部分だけ聞きなよ すっきりと実現できなかったので尋きました。というか、 往々にしてこの手のことを実現すると車輪の再発明になってしまってる事が多い。 なので、他の人も決定的な車輪を持ちあわせていないという情報はとても大切で、 有難く思っています。
541 名前:login:Penguin mailto:sage [2010/02/07(日) 22:44:49 ID:qrQKR8fu] 典型的なゆとり脳というか なんでこんな上から目線なんだろ そういうのは自分で書いたの張ってから言えよ
542 名前:login:Penguin mailto:sage [2010/02/07(日) 22:46:48 ID:U7v7s3zM] >>540 実現できたなら実現方法そのものを聞く必要はない 実現方法を提示してより良くするにはどこを直せばいいか聞けばいい 他人のコストは格段に違うだろうし、回答も違ったものになる というかお前>>526 だろ?
543 名前:526 mailto:sage [2010/02/07(日) 23:05:32 ID:sirvd3yi] こらこらw 静観してる俺まで巻き込むなよ
544 名前:login:Penguin mailto:sage [2010/02/07(日) 23:09:51 ID:fkJC7wtF] >>542 そうですね。その点は気をつけたいと思います。 >というかお前>>526 だろ? いや違う。 むしろ、>>529 (526)にしろあなたにしろ"/tmp"をマッチさせている時点で、要求条件から逸脱していると思っている。
545 名前:login:Penguin mailto:sage [2010/02/07(日) 23:30:09 ID:U7v7s3zM] ID変えながら大変ですね。元に戻せないの?
546 名前:login:Penguin mailto:sage [2010/02/07(日) 23:44:26 ID:sirvd3yi] どうやって戻すんだよw
547 名前:login:Penguin mailto:sage [2010/02/07(日) 23:49:53 ID:qVmLGOqM] 昼間寝ていたら正規表現使う夢を見た気がする、なぜだ
548 名前:login:Penguin mailto:sage [2010/02/07(日) 23:56:03 ID:U7v7s3zM] 同じIPが取れるまでトライ!(やったことないので同じになるのか知らん)
549 名前:login:Penguin mailto:sage [2010/02/08(月) 06:35:08 ID:wgsJNc2d] >>548 お前ちょっと黙れ。
550 名前:login:Penguin mailto:sage [2010/02/08(月) 08:30:32 ID:shLyrCGR] U7v7s3zMが取れるまでトライし続けてるのかなw
551 名前:login:Penguin mailto:sage [2010/02/08(月) 12:19:18 ID:2AE05UQA] 答えてもらっておいて「まあそんなもんだよね」 これはひどい
552 名前:login:Penguin mailto:sage [2010/02/08(月) 17:02:25 ID:h/fx9poh] 複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。 (基本仕様) @ コマンドとして実行できる.(シェルコマンドである.) A 入力した数字を計算できる. B 入力できる数字の個数は2以上とする. C 四則演算子(+,−,*,/)を選択,または直接入力して 数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2) の計算結果を出力する. D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する. (ポイント) ? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く. ? 標準入力から文字列を入力するには $< を用いる. ? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする. ? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとおねがいします(今週中にお願いします!)
553 名前:login:Penguin mailto:sage [2010/02/08(月) 17:05:28 ID:llGt0cFK] 何箇所でマルチしてんだよwww
554 名前:sage [2010/02/08(月) 17:06:29 ID:kDoV0MXx] 宿題は自分でやろうね。
555 名前:login:Penguin mailto:sage [2010/02/08(月) 20:38:54 ID:Wyshj96C] 後から読んで526にワロタ カワイソスw
556 名前:login:Penguin mailto:sage [2010/02/19(金) 00:14:13 ID:c2ocdmWw] df -h /tmp | sed 's/.*\([0-9][0-9]*\)%.*/\1/'
557 名前:login:Penguin [2010/02/20(土) 23:34:54 ID:vDEbYPUT] 以下の結果を出力するシェルを,bashスクリプトで書け. (基本仕様) ・コマンドとして実行できる.(シェルコマンドである.) ・ユーザーが10000以上99999以下の5桁の数字を入力する. ・その数字を7で割って1余り,かつ13で割って2余った場合は Daikichiと表示する. ・それ以外で,13で割って2余った場合は Chuukichiと表示する. ・それ以外で,7で割って1余った場合は Shoukichiと表示する. ・それ以外の場合は Hazureと表示する. ・入力した文字が10000以上99999以下の数字以外の場合はエラーメッセージを表示する. ・できる人は,コマンドライン引数でDaikichiなどの文字を変更できるようにする. (ポイント) ☆シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く. ☆標準入力から文字列を入力するには read を用いる. ☆コマンドラインの引数は,$@に格納されている.(その要素は $1 $2 ...) ☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとお願いします
558 名前:login:Penguin mailto:sage [2010/02/20(土) 23:37:36 ID:8qh4FPc7] >>557 > 誰かわかるひとお願いします まぁ、Linux使える人ならば、誰でも分かる "学校" の課題ですわな(w # "学校" は 大学 でない。
559 名前:login:Penguin mailto:sage [2010/02/20(土) 23:46:16 ID:WE3Utbg7] シェルスクリプトの課題を出す学校ってあるんだね。 ふつーは、CとかJavaを中心にやるものだと思ってた。
560 名前:login:Penguin [2010/02/21(日) 00:00:05 ID:WDiWxw8N] #!/bin/bash read read echo $((read%3))`echo 5p$(echo e$(echo l5b$(echo 6M5)q2)744$(echo GsCg$(echo =$(echo =))))|base64 -d`
561 名前:login:Penguin mailto:sage [2010/02/21(日) 00:16:12 ID:FUNRtF1w] 死ねばいいのに
562 名前:login:Penguin mailto:sage [2010/02/21(日) 00:27:29 ID:R8eJDQx8] 何をお願いされているのだろう。アンケートかな? 回答「わかります」 上から2桁目で四捨五入したい(例: 15 -> 20, 312 -> 300, 9432 -> 9000) どうやるのが一番簡単かな?
563 名前:login:Penguin [2010/02/21(日) 00:39:34 ID:y6fTjKHz] 10を底とした対数とって 1.5*10^1 3.12*10^2 9.432*10^3 仮数部を小数点以下で四捨五入する
564 名前:login:Penguin [2010/02/21(日) 01:05:26 ID:y6fTjKHz] 全然対数じゃないや
565 名前:login:Penguin mailto:sage [2010/02/21(日) 01:20:23 ID:mOFZBUIZ] >>557 お前UNIX板のシェルスクリプトスレでも宿題は自分でやれって言われてただろ マジで死ね
566 名前:login:Penguin [2010/02/21(日) 02:00:25 ID:y6fTjKHz] $ echo 'x=9432; beki=l(x)/l(10.0); scale=0; beki/=1; scale=10; y=x/(10^beki); y+=0.5; scale=0; y/=1; y*=(10^beki); scale=0; y/=1; y;' | bc -l 9000 一応、15, 312, 9432 については期待の値になった。
567 名前:login:Penguin mailto:sage [2010/02/21(日) 02:38:10 ID:ymcnTK5S] >>566 しかし4432613で矛盾が出た。
568 名前:login:Penguin [2010/02/21(日) 08:29:04 ID:y6fTjKHz] 違うかね? 4432613 = 4.432613 * 10^6 → 4.4*10^6 → 4.0*10^6 = 4000000 >>562 さんに聞いてみようか。 入力4432613での期待値は、 上から2桁目の"4"で四捨五入して、4000000 でよろし? 3桁目の"3"でして、4400000 ではなくて。
569 名前:login:Penguin [2010/02/21(日) 09:26:12 ID:y6fTjKHz] 少しコメント入れました。ダメな場所はどなたか直してください。 echo 'x=4432613; # x=y * 10^d 表現にする d=l(x)/l(10); scale=0; d/=1; scale=1; y=x/(10^d); # yの小数点第一位を四捨五入して整数に。 y+=0.5; scale=0; y/=1; # 元の桁数に戻す。 z=y*(10^d); z; ' | bc -l
570 名前:login:Penguin [2010/02/21(日) 11:49:45 ID:y6fTjKHz] アプローチを変えて文字列処理にしてみた $ echo 4432613 | perl -npe 's/^(\d)(\d)(\d+)/$1+($2>4) . 0 . 0 x length($3)/e;'
571 名前:login:Penguin [2010/02/21(日) 12:23:46 ID:y6fTjKHz] $ echo 15 | perl -npe 's/^(\d)(\d)(\d*)/$1+($2>4) . 0 . 0 x length($3)/e;'
572 名前:login:Penguin [2010/02/21(日) 13:04:19 ID:y6fTjKHz] #!/bin/ksh v="$1" a=${v:0:1} b=${v:1:1} c=${v:2} [ $b -gt 4 ] && a=$((a+1)) b=0 c=$(echo $c | tr 0-9 0) echo "$a$b$c"
573 名前:login:Penguin mailto:sage [2010/02/21(日) 13:09:12 ID:7QPAwQGI] ん、よくわからんけど…… 乙 w
574 名前:562 mailto:sage [2010/02/21(日) 19:12:39 ID:R8eJDQx8] なんかすごいものがw >>568 >入力4432613での期待値は、 >上から2桁目の"4"で四捨五入して、4000000 でよろし? よろしです。 パッと見で>>571 がスマートですね シェルからこいつを呼ばせて貰おうと思います ありがとうございましたm(_ _)m
575 名前:login:Penguin [2010/02/21(日) 20:33:49 ID:y6fTjKHz] >>507 ttp://sourceforge.jp/projects/sfnet_pipestatus/ ど根性に脱帽
576 名前:login:Penguin mailto:sage [2010/02/26(金) 00:26:14 ID:DYTaEvQS] 自分自身(ファイル)をサーバにuploadするシェルスクリプトって可能ですか? 具体的には、ちょこちょこ定期的にレンタルサーバにuploadしたいファイル群があるのでシェルスクリプトを書きたいのですが、 そのシェルスクリプトファイル自身もuploadしたいのです。
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 ディレクトリの大文字小文字違いは考えてない。