1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 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 あたりに色々と。
357 名前:login:Penguin mailto:sage [2008/07/07(月) 21:34:48 ID:2WJ5nXyr] >>356 キリの良いところで別のスクリプトにして子プロセスとして動かせば?
358 名前:login:Penguin mailto:sage [2008/07/07(月) 21:44:55 ID:pcTeT086] >>357 なるほど。 例えばアプリケーション内のループをトリガにできれば問題を回避できそうですね。 その方向で検討してみます。
359 名前:login:Penguin mailto:sage [2008/07/13(日) 16:02:53 ID:XKteJijz] quotaのedquotaだとテキスト形式でエディタで編集しなきゃいけないですが、 コマンドのみで指定ユーザを指定容量に変更、ってどうすればできるでしょうか?
360 名前:login:Penguin mailto:sage [2008/07/13(日) 18:28:58 ID:Ixz1lkH8] 実は、ここは「シェルスクリプト総合」スレ。
361 名前:login:Penguin mailto:sage [2008/07/13(日) 23:41:37 ID:2nzKAI8F] a,1 a,2 b,3 c,1 d,15 d,1 d,1 e,3 こんな感じのファイルを、1カラム目でユニークにして、2カラム目は1カラム目の値ごとに合計を出したい という場合なんですが、シェルではむずいですか? a,3 b,3 c,1 d,17 e,3 この結果を求めてます
362 名前:login:Penguin mailto:sage [2008/07/14(月) 00:16:50 ID:pAKMtVeu] いいえ 容易です
363 名前:login:Penguin mailto:sage [2008/07/14(月) 08:20:36 ID:Nv/tP5Or] >>361 cutとsort、uniqでキーのリストを作る。 grepとcutでキーごとの値を得る。 それをexpr
364 名前:login:Penguin mailto:sage [2008/07/14(月) 16:52:54 ID:6AUtGr7x] >>361 awk 使えば〜
365 名前:login:Penguin mailto:sage [2008/07/14(月) 18:28:30 ID:Mh/R7fAz] >>361 awk -F, '{dat[$1]+=$2}END{for(i in dat) print i","dat[i]}' hoge
366 名前:login:Penguin mailto:sage [2008/07/17(木) 15:31:48 ID:8xNJ++Yc] 指定した変数の中に、ある文字列があれば〜 という条件式、どのように書けばいいですか。
367 名前:login:Penguin mailto:sage [2008/07/17(木) 15:59:24 ID:RxW1jeOx] #!/bin/sh hoge=$1 hogehoge=$2 if [ `echo $hoge | grep $hogehoge` ]; then echo "$hogehoge exist in $hoge" fi exit 0
368 名前:login:Penguin mailto:sage [2008/07/17(木) 16:09:53 ID:RxW1jeOx] と思ったけど >>228 のほうがいいな
369 名前:login:Penguin mailto:sage [2008/07/17(木) 20:02:22 ID:8xNJ++Yc] >>367 ども ですが、ひとつ質問です たとえばhogeにunko is hogehogeにu とした場合、ちゃんと動かないですがこれはどう扱えばいいですか。
370 名前:login:Penguin mailto:sage [2008/07/17(木) 20:35:02 ID:IIv1XTjU] よろしくおねがいします bkfile=$dest/$2.$timestamp.tar.gz tar cpzf $bkfile $1 >/dev/null 2>&1 if [ $? != 0 -o ! -e $bkfile ]; ここのでの if [ $? != 0 -o ! -e $bkfile ]; 意味を教えて下さい、エロイヒト
371 名前:login:Penguin mailto:sage [2008/07/17(木) 20:49:36 ID:wB0Vu+2C] >>370 cyberam.dip.jp/linux_command/shellscript/shellscript_main.html
372 名前:login:Penguin mailto:sage [2008/07/17(木) 21:05:28 ID:6zoBsCIm] それも、変数に 'unko is' を入れられない糞スクリプトだね。
373 名前:login:Penguin mailto:sage [2008/07/17(木) 21:10:39 ID:IIv1XTjU] $? != 0 -o は終了ステータス ! -e $bkfile はファイルで無い場合 すなわち 終了ステータスがO以外、且つ、bkfileがファイルの場合 ということでok?
374 名前:login:Penguin mailto:sage [2008/07/17(木) 21:14:48 ID:ZrSZoUoY] >>372 unkoは入れるものじゃなくて出すものだからな #/bin/sh hoge=$1 hogehoge=$2 if [ "`echo $hoge | grep $hogehoge`" = "$hoge" ]; then echo "$hogehoge exist in $hoge" fi
375 名前:login:Penguin mailto:sage [2008/07/17(木) 21:21:49 ID:wB0Vu+2C] >>373 終了ステータスが0以外、もしくは、$bkfileファイルが存在しない場合
376 名前:login:Penguin mailto:sage [2008/07/17(木) 21:27:09 ID:IIv1XTjU] >>375 thx if [ $? != 0 -o ! -e $bkfile ]; [ $? != 0 ]且つ [-o ! -e $bkfile ] -oの意味と [ $? != 0 -o ! -e $bkfile ]; スクリプトの区切り方がわかんらんのですが・・・ 面倒かけてスマソ よろしくお願いします
377 名前:login:Penguin mailto:sage [2008/07/18(金) 00:26:56 ID:djfoTRoL] >>374 助かりましたどうもです。
378 名前:login:Penguin mailto:sage [2008/07/18(金) 00:47:41 ID:JinxhkI+] >>376 man test で -o を探せ。
379 名前:login:Penguin mailto:sage [2008/07/23(水) 12:37:01 ID:AKylUJRP] 「あるディレクトリにAA.bbというファイルがなかったら AA.ccというファイルを削除する」 これをどう書いたらいいか教えてください
380 名前:login:Penguin mailto:sage [2008/07/23(水) 12:42:19 ID:XuVewefN] [ ! -f AA.bb ] rm AA.cc
381 名前:login:Penguin mailto:sage [2008/07/23(水) 12:43:53 ID:x1Crms/C] 宿題は自分でやりなさい。
382 名前:379 mailto:sage [2008/07/23(水) 21:51:48 ID:AKylUJRP] >>380 ありがとうございます!できました。 別件でもう一つ教えてください。 「m2eという拡張子のものをコンバート(m2t化)、成功したらm2eを削除する」 というスクリプトを書きました。 #!/bin/sh for file in *.m2e do /usr/local/bin/b25 $file ${file%m2e}m2t EXITCODE=$? if [ 0! = $EXITCODE ]; then rm -f $file fi done m2eファイルは複数あるんですが、4行目でありったけのm2eを処理し終わらないと 5行目以降の処理に進まないようで、 m2eを削除することなくばんばんm2tができていきます。 これを、1ファイルごとの処理にするにはどこを変えたら良いでしょうか・・・?
383 名前:login:Penguin mailto:sage [2008/07/23(水) 21:59:02 ID:XuVewefN] >>382 >381 in `ls *.m2e`
384 名前:login:Penguin mailto:sage [2008/07/23(水) 22:18:42 ID:jePbQOfG] 分からない時は変数を出力してみるといいよ!
385 名前:login:Penguin mailto:sage [2008/07/23(水) 22:22:18 ID:Ec8ZyKSx] 終了判定の if文がおかしいから、rm行が実行されないのでは? sh -x script してデバッグしてちょ。
386 名前:379 mailto:sage [2008/07/23(水) 23:27:36 ID:AKylUJRP] 皆さんほんとありがとうございます。 sh -x すら知りませんでした。超便利ですねこれ…。 で、b25コマンドが成否に関わらず終了コード0を返していました。 成功したら1を返すだろうという先入観が敗因でした。 今日教わったことを踏まえ以下のとおりにしたら成功しました。 #!/bin/sh for file in `ls *.m2e` do /usr/local/bin/b25 $file ${file%m2e}m2t if [ -f ${file%m2e}m2t ]; then echo complete rm -f $file else echo fail fi done 初めて書くシェルスクリプトですが、おかげさまで思ったとおりできました。 どうもありがとうございました。
387 名前:login:Penguin [2008/07/23(水) 23:30:38 ID:bXJC8PaP] >>383 ls する必要あるか?
388 名前:login:Penguin mailto:sage [2008/07/23(水) 23:31:06 ID:HicxYVC5] >>386 蛇足かもしれんが、成功したときの終了コードは0だ。
389 名前:login:Penguin mailto:sage [2008/07/24(木) 01:05:36 ID:cIOzBtbq] 空白を含んだファイル名の処理がおかしくなるので,ls しない方がベター。 元の > for file in *.m2e のままでよい。 >>382 = の否定は != ね。 ! と = の間に空白を入れてはいけないよ。
390 名前:login:Penguin mailto:sage [2008/07/24(木) 08:32:37 ID:BJInmIaX] >>387-389 遅いよおまいら。 遅刻の罰として、5分毎にこのスレの新規書き込みをチェックするスクリプトを上げること。 bashの内部コマンド以外は使ってはいけません。
391 名前:login:Penguin mailto:sage [2008/07/24(木) 10:40:03 ID:jtU4rAt4] curlも使っちゃいかんのかい・・・
392 名前:login:Penguin mailto:sage [2008/07/24(木) 20:20:13 ID:Hhban5lk] あきまへん。bashのソケットで。
393 名前:login:Penguin mailto:sage [2008/07/24(木) 22:02:07 ID:pIyY20xI] wgetは認められるはず。 なんせ左手だけで入力できるんだぜ?
394 名前:login:Penguin mailto:sage [2008/07/24(木) 23:00:05 ID:yNUWiOQr] >>392 詳しくは知らないけど/dev/tcp/host/portじゃダメかな?
395 名前:login:Penguin mailto:sage [2008/07/25(金) 08:02:37 ID:5wHuLUjg] ええのではないでしょうか bashでcurlを代替するには、それで双方向ソケットを実現するしか多分ないだろうから。
396 名前:login:Penguin mailto:sage [2008/07/30(水) 16:48:07 ID:JUVwIDuC] あるファイルの、ファイル名を先頭から10文字分取得してOSの変数に入れたいのですが 拡張子もない日時そのままのファイル名(080730151530 とか)なので for文すら書けずにいます。 どう書いたらいいですかと聞ける段階にもないのですが、 こういったファイル名の扱い、前方一致のさせ方について 参考になりそうなサイトなどないでしょうか?
397 名前:login:Penguin mailto:sage [2008/07/30(水) 17:37:14 ID:8Rj3UHKM] まずは正規表現について学ばれるといいと思います
398 名前:login:Penguin mailto:sage [2008/07/30(水) 17:47:11 ID:sE7Hyt0D] #!/bin/sh tmp="9999444422228888" for file in ${tmp}; do #先頭から8文字目まで切り出し echo ${file} | cut -c 1-8; done プロトタイプつくって、色々試してみるといいかもよ あとは、tmpをどのように持っていくか find使いたかったら tmp=`find -tpe f` とかだろうし 色々やってるうちに、スペースが入ったファイル名とかで疑問もでてくるだろうし
399 名前:login:Penguin mailto:sage [2008/07/31(木) 02:05:26 ID:kxeNsmhd] 目的のファイルがあるディレクトリで(そのディレクトリに cd して) スクリプトを実行するという前提で、、、 for FILE in * で、そのディレクトリにある隠しファイル以外のファイルの名前が順に変数 FILE に入る。 拡張子のあるなしは関係ない。 もし、日時そのままのファイル名(数字12文字のみからなる?)以外のファイルが ディレクトリ内に存在する場合には、以下のような if 文で弾く。 if echo $FILE | grep '^[0-9]\{12\}$' > /dev/null あとは>>398 のを組み合わせて全体はこんな感じ。 #!/bin/sh for FILE in * do if echo $FILE | grep '^[0-9]\{12\}$' > /dev/null then echo $FILE | cut -c 1-10 fi done
400 名前:login:Penguin mailto:sage [2008/07/31(木) 10:18:05 ID:JpgVGgaY] そもそも CUI 環境の UNIX, Linux に拡張子という概念は無いと思われます。
401 名前:login:Penguin mailto:sage [2008/07/31(木) 14:53:26 ID:a31/vqCD] 概念という言葉が適切かどうか。
402 名前:login:Penguin mailto:sage [2008/07/31(木) 15:54:04 ID:SAvKwoDD] kakutyou.c
403 名前:login:Penguin mailto:sage [2008/07/31(木) 16:54:35 ID:CDeZt19d] >CUI 環境の UNIX, Linux に拡張子 CUIと拡張子に何の関連があるんだ。 MS-DOS時代には拡張子が無かったという主張なのか。
404 名前:login:Penguin mailto:sage [2008/07/31(木) 17:22:53 ID:JpgVGgaY] >>403 文字通りの意味だよ KDEなど使用したX環境では拡張子を判断してプログラム動作を変えるものが一部にあるからね もう一度言うが、「文字通りの意味」だ そんなに解らん日本語だったかね
405 名前:login:Penguin mailto:sage [2008/07/31(木) 17:24:39 ID:FFTlQwAQ] mailcapはあるけど
406 名前:login:Penguin mailto:sage [2008/07/31(木) 17:26:02 ID:+AWBOmCl] 拡張子ではなく suffix だ、とかそういう話じゃなかったのか。
407 名前:login:Penguin mailto:sage [2008/07/31(木) 17:29:51 ID:6oedF87g] >>404 胸張って屁理屈言ってどうするかね。 大人気なく反例を提示するなら、CUIで動く代表的なプログラムであるgccは拡張子を見て呼ぶコンパイラを変えたりするが、見解を求む。
408 名前:login:Penguin mailto:sage [2008/07/31(木) 17:35:59 ID:JpgVGgaY] >>407 めんどい
409 名前:login:Penguin mailto:sage [2008/07/31(木) 18:09:02 ID:RztDzhJY] >>407 座布団あげる。 柔軟だというだけだよね。
410 名前:login:Penguin mailto:sage [2008/07/31(木) 18:18:49 ID:6oedF87g] gzipも拡張子見るなw
411 名前:login:Penguin mailto:sage [2008/07/31(木) 18:21:00 ID:9ySiTva1] make !! , make !!
412 名前:login:Penguin mailto:sage [2008/07/31(木) 20:26:30 ID:54icAPXL] ID:JpgVGgaY 恥ずかしいなw 全部言い返されてやんの
413 名前:login:Penguin mailto:sage [2008/07/31(木) 22:03:49 ID:zM7TOaQk] >>406 拡張子でなく接尾辞だという点には誰も異論だ無いんじゃないか。 >KDEなど使用したX環境では拡張子を判断してプログラム動作を変えるものが一部にあるからね などと強弁してるのを皆に笑われているだけで。
414 名前:login:Penguin mailto:sage [2008/07/31(木) 23:00:46 ID:XBLFfbqE] hoge.gz.20080101 を gunzip しようとしたら怒られましたよ
415 名前:login:Penguin mailto:sage [2008/07/31(木) 23:27:25 ID:9ySiTva1] >>413 gcc も gunzip も manページの表現は接尾子でもsuffixでもなく、「拡張子」ですな。
416 名前:login:Penguin mailto:sage [2008/07/31(木) 23:30:11 ID:F09gGQyB] もう いじめはやめましょうw
417 名前:login:Penguin mailto:sage [2008/07/31(木) 23:43:03 ID:W0fu7NON] >>415 そら、まあ C:\>gzip.exe -dc < hoge.gz > hoge なんてときの .gz は拡張子だもの。 というか、実のところ「拡張子」という呼称が既に人口に膾炙してるから、そう表現してるんじゃないかな。 たぶん、>>406 の言ってることはもっと厳格で、FAT(だっけ?)には8文字のファイル名と3文字の拡張子を入れる覧があるが、inodeにはファイル名覧しか無いといったことだと思うよ。 あっと、俺は ID:JpgVGgaY ではないよ。話をたどれば分かると思うが。
418 名前:login:Penguin mailto:sage [2008/07/31(木) 23:50:25 ID:9ySiTva1] >>417 >>417 ≠ ID:JpgVGgaYは了解しています。直接レスつけるのは忍びなかったので。 あとsuffixつーとドメインネーム則なんかのジャンルも含む気がして ちょっと拡張子とはニュアンスが違うと思いました。
419 名前:login:Penguin mailto:sage [2008/08/01(金) 00:09:05 ID:Z+D1IjNX] >>415 suffix って表現もあるじゃん。 extension と混在してる。
420 名前:login:Penguin mailto:sage [2008/08/01(金) 07:18:11 ID:K/umwhS+] まぁまぁ、404のオモシロ発言でもたどって和んで。 >>400 そもそも CUI 環境の UNIX, Linux に拡張子という概念は無いと思われます。 >>403 >CUI 環境の UNIX, Linux に拡張子 CUIと拡張子に何の関連があるんだ。 MS-DOS時代には拡張子が無かったという主張なのか。 >>404 >>403 文字通りの意味だよ KDEなど使用したX環境では拡張子を判断してプログラム動作を変えるものが一部にあるからね
421 名前:login:Penguin mailto:sage [2008/08/01(金) 09:33:44 ID:9ncfYug9] 人口に膾炙←読めない
422 名前:login:Penguin mailto:sage [2008/08/03(日) 20:26:52 ID:z2v8StjQ] ループか? ループスレなのか?うひょーーーーーーーーーー
423 名前:login:Penguin mailto:sage [2008/08/05(火) 09:41:49 ID:GjmRcMaB] 拡張子はファイル名の接尾辞として使われるっていう、ただそれだけの話。
424 名前:login:Penguin mailto:sage [2008/08/05(火) 11:31:30 ID:P4vieYD2] *.bak と *~ で見た目は違うが用途はほぼ同じなんだけど *.1 *.2 … はlogとmanで意味合いが変わるもんな
425 名前:login:Penguin mailto:sage [2008/08/10(日) 15:12:11 ID:3WlJmUth] bash の配列の話です。 添え字を付けて定義すれば要素がかけた配列を作れますよね? x=(a b c) x[4]=e x[6]=g こんな風に定義すると要素の数 ${#x[@]} は 5 を返しますが 実際には x[6] まで定義されているわけです。 こういう歯抜けの配列から添え字と要素をセットで全て取り出す方法 何かありませんか? for i in ${x[@]} ; do echo $i ... だと添え字がわかりません。 for (( i=0 ; i < ${#x[@]} ; i++ )) ; do echo ${x[i]} ... だとかけた部分に対応できません。 bash の配列処理が貧弱なのは知っていますが 何か知恵がありそうな気もするんです。
426 名前:login:Penguin mailto:sage [2008/08/10(日) 16:39:06 ID:YtTqhIm8] >こんな風に定義すると要素の数 ${#x[@]} は 5 を返しますが うちでは 6 になる。 $ set x=(a b c e '' g) なので、 x[5]が空だからきっと代入されなかったんだろう という判断しか思い付かない。
427 名前:426 mailto:sage [2008/08/10(日) 19:20:40 ID:OrrhkboJ] 読み返すと我ながらバカな日本語でイヤになった。式で書く for ((i=1; i <= ${#x[@]}; i++)) do if [ "${x[i]}" != "" ]; then echo "$i ${x[i]}" という判断文を付け加えることぐらいしか思い付かない。
428 名前:login:Penguin mailto:sage [2008/08/10(日) 21:22:42 ID:3WlJmUth] >>426 >> こんな風に定義すると要素の数 ${#x[@]} は 5 を返しますが > うちでは 6 になる。 あれ?自分の環境 (bash 2.05b @ debian) では 5 なんだけどな。 そちらの環境を教えてくれますか?
429 名前:login:Penguin mailto:sage [2008/08/10(日) 21:51:14 ID:uOwkyJaM] あ、ごめん。zsh でやっていた。 bash で set すると、 $ set x=([0]="a" [1]="b" [2]="c" [4]="e" [6]="g") で、添え字と要素がセットでズバり出るじゃないですか。
430 名前:login:Penguin mailto:sage [2008/08/10(日) 23:04:19 ID:3WlJmUth] >>429 ああ、そうでした。確かに表示されますね。 [] とか = とか変な文字が要素に入らないという前提なら そこから添え字のみを取り出せればいけそうですね。
431 名前:login:Penguin mailto:sage [2008/08/14(木) 21:23:54 ID:6SkumsSk] 基本的なことで、すいまん bashで、たとえば # login : root # passwd : foo なんて場合、シェルからの問い合わせに対して、スクリプト側で rootやfooを自動的に入力したいのですが、どのように書いたらいいのでしょうか?
432 名前:login:Penguin mailto:sage [2008/08/14(木) 21:24:45 ID:6SkumsSk] BATU 基本的なことで、すいまん MARU 基本的なことで、すいません
433 名前:login:Penguin mailto:sage [2008/08/14(木) 21:44:42 ID:Q5H0d7m9] >>431 expect
434 名前:login:Penguin mailto:sage [2008/08/14(木) 21:52:17 ID:6SkumsSk] >>433 イクスペクトですか、ありがとう
435 名前:login:Penguin mailto:sage [2008/08/17(日) 13:04:54 ID:id1iDBNz] >>433 bashで
436 名前:login:Penguin mailto:sage [2008/08/18(月) 22:17:27 ID:P4gPyZDt] グループ sumo が存在するか? を調べる方法が思いつかない。 ユーザ hakuho の存在を調べるのは、 id hakuho などとやろうと思うが、グループの方をhelp!! grep /etc/group はやりたくない。
437 名前:login:Penguin mailto:sage [2008/08/18(月) 23:25:02 ID:Wi4hQzW9] >>436 くだらねえ質問はここに書き込め! Part166 pc11.2ch.net/test/read.cgi/linux/1217051698/
438 名前:login:Penguin mailto:sage [2008/08/18(月) 23:35:20 ID:tdXNnNro] LANG=C chgrp hakuho / 2>&1 | grep -q '^chgro: invalid group' || echo ok
439 名前:login:Penguin mailto:sage [2008/08/19(火) 08:01:52 ID:GbBy+Szp] chgrpされたら困るやん。
440 名前:login:Penguin mailto:sage [2008/08/19(火) 08:17:46 ID:yV2lM3C5] root じゃなきゃ大丈夫でしょ。
441 名前:login:Penguin mailto:sage [2008/08/19(火) 11:14:23 ID:i/uDMj66] んな罠みたいなスクリプトはちょっと。
442 名前:login:Penguin mailto:sage [2008/08/19(火) 11:19:47 ID:yV2lM3C5] 他に思いつかないんだよな。 素直に /etc/group を grep するのが一番だと思う。
443 名前:login:Penguin mailto:sage [2008/08/19(火) 11:30:56 ID:Z4idUwk9] grep /etc/group はやりたくないそうだから仕方ない
444 名前:login:Penguin mailto:sage [2008/08/19(火) 11:31:37 ID:yV2lM3C5] NIS とか LDAP とか使ってるなら perl あたりで getgrnam とか。
445 名前:login:Penguin mailto:sage [2008/08/19(火) 22:33:06 ID:/3aOZv4D] NISもLDAPも使ってないが、これは良いかもしれない。ありがとう。 $ perl -e '($n, $p, $g, $m) = getgrnam 'lp'; printf "%s\n", $g' 7
446 名前:login:Penguin mailto:sage [2008/08/21(木) 00:34:13 ID:uS1Qpazh] bash使ってるのですが lsすると何も返ってこないです set +mするとかえってきます 何が悪いのかさっぱりわかりません
447 名前:login:Penguin mailto:sage [2008/08/21(木) 02:06:11 ID:hLnB3a+h] >>446 type ls するとどう出る?
448 名前:login:Penguin mailto:sage [2008/08/25(月) 22:22:20 ID:q8+dK05f] echo $"Starting XXXX daemon..." という一文の「$」の意味を解しかねてるんだども…
449 名前:login:Penguin mailto:sage [2008/08/25(月) 22:30:19 ID:TaEIkWlk] % echo $"Starting XXXX daemon..." $Starting XXXX daemon... % echo "$Starting XXXX daemon..." XXXX daemon... %
450 名前:login:Penguin mailto:sage [2008/08/25(月) 22:34:16 ID:i+OsnagO] >>448 ja.po とか作るときに $" " で囲んだところが 翻訳の対象として切り出される。 メッセージ カタログ化 とかでググれ。
451 名前:login:Penguin mailto:sage [2008/08/25(月) 23:32:42 ID:w1+LX6rA] これすか… bash(1) > --dump-po-strings > Equivalent to -D, but the output is in the GNU gettext po (portable object) file format. 試しに /usr/share/locale/ja/LC_MESSAGES/XXXX.mo を作ってみたが、日本語にならない。 あうあう。。。 「$」はぶった切ることにします。
452 名前:login:Penguin mailto:sage [2008/08/25(月) 23:49:02 ID:i+OsnagO] >>451 急ぎじゃなかったら少し頑張ってみるといいかも。 前作ったもの見たらこんな感じで作業してたらしい。 $ xgettext -o hoge.po hoge.sh $ gtranslator hoge.po $ msgfmt -o hoge.mo hoge.po hoge.sh の中にはこんなのが書いてあった。--> if [ -z "$TEXTDOMAIN" ] ; then TEXTDOMAIN="hoge" TEXTDOMAINDIR="/usr/share/locale" fi <-- TEXTDOMAIN="hoge.sh" じゃなくて TEXTDOMAIN="hoge" にしてあるのは hoge.sh をインストール時に /usr/bin/hoge に改名(hoge.sh から hoge に)するため。
453 名前:login:Penguin mailto:sage [2008/08/26(火) 23:01:28 ID:JsSv3XDz] gtranslator てのが無かったので、 $ sh --dump-po-strings XXXX > ~/XXXX.po とし、msgfmt 以降同様にすると日本語になりました。 どうもありがとう。
454 名前:login:Penguin mailto:sage [2008/08/31(日) 15:42:27 ID:aoYJcwTK] ?$
455 名前:login:Penguin [2008/09/01(月) 09:58:54 ID:LEXE4Xrt] C言語でいう for (float a=0.1;a<1.5;a+=0.1){ } の様なループはどのように書けばよいのでしょうか?
456 名前:login:Penguin mailto:sage [2008/09/01(月) 10:38:54 ID:zLmvj5ED] >>455 小数とか使いたいなら もっとまともな言語使った方がいいよ。
457 名前:login:Penguin mailto:sage [2008/09/01(月) 12:17:57 ID:qt+GSvTX] for i in `seq 1 20` do i=`echo "scale=1; $i / 10" | bc` echo $i done