[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



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]
>>375thx
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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef