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 あたりに色々と。
481 名前:login:Penguin mailto:sage [2009/12/13(日) 11:14:43 ID:45+rg1Ww] 画面制御の話題だったの? このスレ的には tput あたりでやるのが正しいのだろうか。
482 名前:login:Penguin mailto:sage [2009/12/13(日) 11:23:29 ID:1bGElD/p] >>478 $ man console_codes
483 名前:login:Penguin mailto:sage [2009/12/13(日) 11:50:06 ID:k2yGj3y5] このスレ的には dialog とか whiptail じゃないの。
484 名前:login:Penguin mailto:sage [2009/12/13(日) 18:57:54 ID:7EV0TAof] 普通の文章を書いた平文テキストをxtermに関連付けして開くと 実行権もないのにxtermがいくつも開いてフリーズします。 なぜですか?
485 名前:login:Penguin mailto:sage [2009/12/13(日) 19:25:45 ID:VEJMKGLd] 「関連付けして開く」ってどういう概念?
486 名前:login:Penguin mailto:sage [2009/12/13(日) 19:31:32 ID:7EV0TAof] 普通は表示とか端末で実行とか聞かれるので、右クリメニューに入れました
487 名前:login:Penguin mailto:sage [2009/12/13(日) 19:38:48 ID:8kXkcLfR] Ubuntu使ってるの?
488 名前:login:Penguin mailto:sage [2009/12/13(日) 22:54:17 ID:u+Xt7Oyd] >>486 ごめん。尋ねておいて悪いけど、 「関連付けして開く」や「右クリメニューに入れ」るってのが判らない。 なので助言できない。
489 名前:login:Penguin mailto:sage [2009/12/13(日) 22:58:13 ID:X8Bwu1bm] >>484 Windowsの関連づけの感覚? GNOMEであれば、プロパティから開くアプリ指定してるとかってことか? 試しにユーザーを新しいの作って再現するかどうか試してみたら? もし再現できなければ ~/.gconf* ~/.gnome* とか退避して削除してログインしなおしてみるとか。 内容からして、くだ質のほうがアドバイスもらえると思うよ。
490 名前:login:Penguin mailto:sage [2009/12/13(日) 23:54:09 ID:3DX9cdGt] >>484 「xterm を起動できるかどうか」は 「xterm を実行する権限があるかどうか」で決まることだから、 「平文テキストを実行する権限」とは関係ない。 $ xterm /tmp/hoge.txt とかやると、 No absolute path found for shell: /tmp/hoge.txt とかいったメッセージは出るけれど、xterm が起動する。 関連付け はよくわからないけれど、 テキストファイルをまとめて開こうとすれば、 ファイルの数と同じだけ xterm が一気に起動する ってことは想像できる。 CPUとか メモリ/swap とかが足りなければ、フリーズみたいな状況になるかもしれない。
491 名前:login:Penguin mailto:sage [2009/12/14(月) 00:20:50 ID:SmNokk3G] >>484 シェルスクリプトの話じゃないでしょう。 こっちで。 くだらねえ質問はここに書き込め! Part 179 pc11.2ch.net/test/read.cgi/linux/1257056891/ 自分の環境もちゃんと書くこと。 www12.atwiki.jp/linux2ch/pages/5.html#id_d2fb2105
492 名前:login:Penguin [2010/01/05(火) 20:34:00 ID:nuI9c99Q] bashで手軽にオブジェクト指向モドキする方法ってありませんか? とりあえず試みたのですが、スッキリしません。 #!/bin/bash gal(){ eval "$1"_name="$2" eval "$1"_age="$3" eval "$1"_sex="$4" } aisatsu(){ eval echo "私は\"\$"$1"_name"、\"\$"$1"_age"歳です。よろしく ね。" } hanasu(){ eval echo "\"\$"$1"_name\"に何の用?" } gal "yuka" "由佳" "16" "女" aisatsu "yuka" hanasu "yuka"
493 名前:login:Penguin mailto:sage [2010/01/05(火) 20:45:01 ID:kbriKfoG] >>492 emasaka.blog65.fc2.com/blog-entry-379.html
494 名前:login:Penguin mailto:sage [2010/01/05(火) 20:48:20 ID:nuI9c99Q] >>493 すごいものがあるんですね。 ありがとうございました。
495 名前:login:Penguin mailto:sage [2010/01/07(木) 18:16:37 ID:wAYEJTZp] テキストファイルで、指定した文字列を含む最初の行を開始位置とし、先とは別の 文字列を含む行が見つかるまでを削除するにはどうすれば良いでしょうか?
496 名前:login:Penguin mailto:sage [2010/01/07(木) 18:20:32 ID:D02SG01g] >>495 sed '/xxx/,/yyy/d'
497 名前:login:Penguin mailto:sage [2010/01/08(金) 10:03:28 ID:KgmcRvHm] >>495 ありがとうございます。 sedというのは強力なんですね。
498 名前:login:Penguin mailto:sage [2010/01/08(金) 12:52:11 ID:zGQxNXrb] >>497 これで「強力」ってどういう意味?
499 名前:login:Penguin mailto:sage [2010/01/08(金) 16:04:10 ID:/auv4CfE] >>498 文字/行削除程度しか知らない初心者にとっては、超強力。
500 名前:497 mailto:sage [2010/01/08(金) 23:16:45 ID:KgmcRvHm] shの変数を>>496 の/xxx/に使いたい場合についてお伺いします。 path=/aaa/bbb sed "/$path/,/yyy/d" の様にしても$pathが展開された時点で区切り文字がエスケープされておらず上手く いきません。 前処理が必要なのか、それともスマートな方法が用意されているのでしょうか?
501 名前:login:Penguin mailto:sage [2010/01/08(金) 23:33:25 ID:awvr0YeL] ファイル名はNUL文字以外なら全て使えるんだよね。 ということは、前処理の段階で区切り文字をエスケープする必要があるのかな。
502 名前:497 mailto:sage [2010/01/08(金) 23:38:17 ID:KgmcRvHm] やはり自前で前処理するわけですね。 sedで簡単に出来そうですね。
503 名前:497 mailto:sage [2010/01/08(金) 23:51:05 ID:KgmcRvHm] 下でできました。 #!/bin/sh -x var=/aaa/bbb esc=$(echo $var | sed -e 's/\//\\\//g') $()の代わりに``を使うとパイプがあるせいか上手くいきませんでした。 実際はどうなのでしょう? 教えて頂けると嬉しいです。
504 名前:login:Penguin mailto:sage [2010/01/08(金) 23:52:38 ID:r+fu5lRJ] sed "/\\$path/,/yyy/d" はどうなの?
505 名前:login:Penguin mailto:sage [2010/01/08(金) 23:53:13 ID:aqeo86VH] 区切り文字を変えるんだよ! sed '\@foo@,\@bar@d'
506 名前:497 mailto:sage [2010/01/09(土) 00:07:36 ID:WfSq+WCG] >>504 それだと$pathの先頭にのみ区切り文字がある場合にしか対応していないと思います。 >>505 そういうときに使うのですね。 なるほど。 ありがとうございました。
507 名前:login:Penguin mailto:sage [2010/01/10(日) 12:29:36 ID:jRBDc3XG] com1 | com2 | com3 の様なとき、どこかでエラーが起こった場合に、それを知ることはできないでしょうか? bash3.0以降だと${PIPESTATUS[@]}で可能なようですがshでなんとかならないかと。
508 名前:login:Penguin mailto:sage [2010/01/10(日) 12:37:23 ID:E5a795Pl] subshellを使って、 (( com1 判定)| com2 判定 )| com3 みたいな事を見た憶えがするけど、定かでない。
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文を使用できる。 ☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとお願いします