[表示 : 全て 最新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あたりに色々と。

331 名前:login:Penguin [2008/07/04(金) 08:23:27 ID:jR7hqKfT]
プロセスをkillするシェルを作成しましたが、そのシェルそのものも引っかかってしまいます。

下記を実行すると、test のプロセスはKillされますが、
./kill_test.sh: line 6: kill: (17914) - No such process
と、エラーが出ちゃいます。
どのようにすれば、そのシェルそのものを検知しなくできますでしょうか。


例えば、test というプロセスをKillするプログラム

#!/bin/bash
# kill_test.sh
ID=ps axo pid,cmd | grep test | awk '{print $1}'`

if [ -n "$ID" ]; then
kill $ID
fi


実行結果
test のプロセスはKillされますが、エラーも出る
./kill_test.sh: line 6: kill: (17914) - No such process



332 名前:login:Penguin mailto:sage [2008/07/04(金) 08:32:51 ID:dZZeWoZr]
>>331
pkill test

333 名前:login:Penguin mailto:sage [2008/07/04(金) 08:55:04 ID:jR7hqKfT]
ありがとうございます。

プロセスはKillされますが こんどは Terminated と出ちゃいますが...


#!/bin/bash
# kill_test.sh

pkill test




334 名前:login:Penguin mailto:sage [2008/07/04(金) 16:17:24 ID:8eslOrWY]
>>331
grep -v $$ とかやって
シェルスクリプトの pid を除く。

grep -v grep とか grep [t]est とかやって
grep の pid を除く。

335 名前:login:Penguin mailto:sage [2008/07/04(金) 23:59:25 ID:/fP/UZlP]
most なんて初めて知ったよ。
ttp://www.jedsoft.org/most/

336 名前:login:Penguin mailto:sage [2008/07/05(土) 05:45:46 ID:zldIi++e]
>>335
同じく
support multiple windowsの意味がわからんwww

337 名前:331 mailto:sage [2008/07/05(土) 08:21:10 ID:f1ZF3ker]

ps axo pid,cmd | grep test| grep -v ' grep' | awk '{print $1}'

で、できました。 m(._.*)mペコッ

 pkill 知りませんでした。pgrepも知ることができ感謝です 

338 名前:login:Penguin mailto:sage [2008/07/05(土) 15:47:51 ID:9A3h5Tdb]
>>335
漏れも漏れも
can scroll left and rightの意味がわからん。

339 名前:login:Penguin mailto:sage [2008/07/05(土) 16:46:32 ID:QzBtt5r9]
文字どおり左右にもスクロールできる、ってことじゃないのか
複数のファイルが見られるとか書いてあるし
ttp://www.slackbook.org/html/file-commands-pagers.html




340 名前:login:Penguin mailto:sage [2008/07/05(土) 19:44:37 ID:wIp47NAo]
perlとかrubyとかpythonとかはシェルスクリプトよりも確かに優れてる面もたくさんあるけど、
classpathの設定とかで混乱する手間と暇を総合的に考えると、単純なシェルスクリプトの範囲内で
問題を解決する能力がある人のほうが貴重。

341 名前:login:Penguin mailto:sage [2008/07/06(日) 00:07:36 ID:H+bXS9E7]
>>340
めんどいからさっさと結論を出すと、適材適所だな。

次の方どうぞ。

342 名前:login:Penguin mailto:sage [2008/07/06(日) 00:17:49 ID:KiLBqQPD]
>>340
> classpathの設定とかで混乱する手間と暇
ちょっとまてw。perlとかrubyとかpython使ったことないだろ?
java男ご乱心。

343 名前:login:Penguin mailto:sage [2008/07/06(日) 00:19:29 ID:H+bXS9E7]
>>342
例えばperlとかには@INCとかあるから、その辺のことを話したいんだろうと理解。

行間くらい読んでやれ。

344 名前:login:Penguin mailto:sage [2008/07/06(日) 00:29:37 ID:KiLBqQPD]
>>343 行間読んでJython,Jrubyみたいな話かとおもた。あんなキモいもん認めん。

345 名前:login:Penguin mailto:sage [2008/07/06(日) 00:31:39 ID:fSJWsnfA]
作るスクリプトが動かされる環境を予測できて,ちゃんと互換性をもたせる能力があればperlでもgnu依存でもなんでもいいよ.

346 名前:login:Penguin mailto:sage [2008/07/06(日) 00:33:14 ID:KiLBqQPD]
それでもjavaライブラリ依存は認めない。

347 名前:login:Penguin mailto:sage [2008/07/06(日) 20:32:11 ID:Bp8Wp40b]
テキスト処理について質問させてください
SQLを格納した以下のようなログファイルがあります。

select * from table1 where 名前='田中'
select * from table1 where 名前='佐藤' and 年齢 > 20
select * from table1 where 名前='鈴木'

これの条件部分('田中'とか'佐藤'の部分)を'*'に一括で変更する方法はありますか?
環境としてbash、awk、sedは使えますがperlは使えません。
よろしくお願いします

348 名前:login:Penguin mailto:sage [2008/07/06(日) 21:12:08 ID:9FSHXxTH]
$sed "s/名前='.*'/名前='*'/g" hoge > foo
$mv foo hoge

349 名前:login:Penguin mailto:sage [2008/07/06(日) 21:36:34 ID:7sKhRIVr]
>>348
$ sed -i "s/名前='.*'/名前='*'/g" hoge



350 名前:login:Penguin mailto:sage [2008/07/06(日) 21:42:16 ID:9FSHXxTH]
そのオプションマニュアルに載ってないな、初めて知った勉強になりました

351 名前:login:Penguin mailto:sage [2008/07/06(日) 22:12:09 ID:ksmXqbT3]
再起動(shutdown -r now)後、
数分後に指定シェルを起動させたいのですが、
何か良い方法ないでしょうか?
centos4で、
/etc/rc.local
に記述すると即時起動は可能なのですが、
時間指定ができないため悩んでおります。

再起動を行うのが一定時刻ではないので
atも使えません。

どなたかお助けくださいませ。

352 名前:login:Penguin mailto:sage [2008/07/06(日) 22:14:33 ID:fSYsy/u2]
>>351
sleep

353 名前:login:Penguin mailto:sage [2008/07/06(日) 22:21:54 ID:WvrNzaWB]
>>348-349
ありがとう

354 名前:login:Penguin mailto:sage [2008/07/06(日) 22:28:07 ID:fMUp8CRa]
>>351
at now + 数 minutes
などと /etc/rc.local に書いたらどうだろう。

355 名前:351 mailto:sage [2008/07/06(日) 22:45:55 ID:ksmXqbT3]
>>352
>>354
サンクスコです!!
試してみます!!

356 名前:login:Penguin [2008/07/07(月) 21:33:14 ID:pcTeT086]
uClinux2.6上のBusyBoxのmshというシェルで質問です。
BusyBoxのバージョンは以下です。
BusyBox v1.4.1 (2008-06-02 10:22:52 CST) Built-in shell (msh)

mshでループ処理をさせていると、いつのまにか
Shell input nested too deeply
というエラーになり、スクリプトのプロセスが死んでしまうのですが、
何か良いやり方はあるでしょうか。

やりたい事は、アプリケーションの裏方で、1秒毎にサーバに
pingを打つなどしてネットワークが見えているかを確認し、
通じないならリカバリをするポーリング処理です。
autorun.sh内からsrvwatch.sh &として起動しています。

srvwatch.sh
--------
#!/bin/sh
server=192.168.0.1
while [ 継続条件 ]
do
ping $server -c 1
if [ $? != 0 ]; then
# ( pingが通じない時の処理 )
fi
sleep 1
done

最悪、他のシェルが使えない事もないのですが、mshで解決できれば
それに越したことはないので、よろしくお願いします。


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を自動的に入力したいのですが、どのように書いたらいいのでしょうか?







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

前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