シェルスクリプト総合 ..
[2ch|▼Menu]
263:login:Penguin
09/08/11 17:55:36 zgCywBrU
>>262
スレ違い。

264:258
09/08/11 18:03:42 ggsX9yQb
>>263
解答ありがとうございます。
スレ違いとのことですが、これはどういったスレで質問するのがよろしいのでしょうか。
シェルスクリプトの表示だったのでこちらに投げさせていただいたのですが
どういった方面のスレかだけでも助言いただけないでしょうか。

265:login:Penguin
09/08/11 18:07:41 zgCywBrU
>>264
くだらねえ質問はここに書き込め! Part176
スレリンク(linux板)

266:login:Penguin
09/08/12 00:03:08 0UM4nevW
>>263
きびしー

267:login:Penguin
09/08/12 00:05:03 I1tOnENr
>>264
VGAとかSVGAとか解像度で違うっての聞いたことある。
もしかしたら全然違うかもしれんがそういうときはきっと誰か激しく突っ込んでくれるはず。

268:login:Penguin
09/08/12 00:10:31 u9/Em9/R
>>267
ぜんぜん違う話。

269:login:Penguin
09/08/12 05:02:52 0UM4nevW
$ cat<<<h$(cat<<<e$(cat<<<l$(cat<<<l)o)\!)

270:login:Penguin
09/08/12 14:49:33 /9MBM8gW
特定文字列が含まれてるかどうかの判断って出来ますか?
sedとかで文字の置き換えとか入れ替えが出来る程度のレベルです。
dg=`route | grep '192.168.24.1'`
でdgの中にug含まれているかどうかを確認したいと思ってます。


271:login:Penguin
09/08/12 14:51:54 u9/Em9/R
>>270
route | grep '192.168.24.1' | grep ug
ってこと?

272:login:Penguin
09/08/12 14:59:52 LZ159q8G
>>270
case "${dg}" in
*ug*)
# match
;;
*)
# not match
;;
esac


273:270
09/08/12 15:13:57 /9MBM8gW
>>271
そうでした。パイプでさらにgrepすればよかったですね。
こちらの方法でも出来ました。
ありがとうございます。

>>272
判定までしていただいて助かります。
こちらの方法で出来ました。
ありがとうございます。


まだまだよくわかってないですがここで質問しなくてもすむように勉強したいと思います。

274:login:Penguin
09/08/12 18:46:07 jKHDnL7q
シェルスクリプトでサーバーのチェックをしてます。
それ自体はcronで定期的に行ってますが、これと併せて定期的にデータを送信出
来ればと考えてます。
実際にはチェックして引っかかったサーバーにzipを送り、サーバーは時間が来
れば勝手に実行するという感じですが、シェルスクリプトでzipデータを別サー
バーに送るとかいうことが可能でしょうか。
可能ならどんな関数を使えばよいかアドバイスもらえないでしょうか。
初歩的な質問かと思いますが宜しくお願いいたします。



275:login:Penguin
09/08/12 18:54:50 8iPFdi1w
金玉 → >>274






。゜( ゜^∀^゜)゜。アーッハハハハノヽノヽノヽノ\ / \

276:login:Penguin
09/08/12 21:03:12 0s7n/+F7
>>274
sshの鍵交換してパスワードを聞かれないようにしておいて
scpなりrsyncなりで送れば良いと思う。

277:login:Penguin
09/08/12 23:35:06 tCsvaW+m
>>239

これはどう?

#/bin/bash
FILE=$1
OFILE=/dev/shm/hoge
xargs < $FILE -n10 | tr " " "\t" > $OFILE


278:login:Penguin
09/08/12 23:40:23 tCsvaW+m
>>277 じこれす

まちがった

xargs < $FILE -n10 | tr ' ' \\t > $OFILE

です。

279:login:Penguin
09/08/12 23:56:35 0UM4nevW
すげー

280:login:Penguin
09/08/14 09:45:57 vesWTwzQ
変数COUNTER の値が10より小さければ
MMF0009 と表示
100より小さければ
MMF0099 と表示
1000より小さければ
MMF0999 と表示
1000ならば
MMF1000 と表示
というスクリプトをcase 文を用いてすっきり書きたくて下記の通り書きましたが、
算術式及び、case の構文の違いでしょうか間違っています、ご教示願えないでしょうか。

#!/bin/bash
COUNTER=0
DIGIT3=000
DIGIT2=00
DIGIT1=0

while [ ${COUNTER} -lt 999 ]
do
case "$COUNTR" in
`expr ${COUNTER}` -lt 10) echo "MMF$DIGIT3$COUNTER";;
`expr ${COUNTER}` -lt 100) echo "MMF$DIGIT2$COUNTER";;
`expr ${COUNTER}` -lt 1000) echo "MMF$DIGIT1$COUNTER";;
`expr ${COUNTER}` = 1000) echo "MMF$COUNTER";;
esac
COUNTER=`expr ${COUNTER} + 1`
done


281:login:Penguin
09/08/14 09:56:51 HEs3iRVc
>>280
manpageより

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against each pattern in turn,
using the same matching rules as for pathname expansion (see Pathname Expansion below).

282:login:Penguin
09/08/14 10:03:19 GRUhI9LP
こういうこと?
seq -f 'MMF%04.f' 0 1000

283:login:Penguin
09/08/14 15:19:52 VHMVUNf7
>>280
すっきり書いてみた。

#! /bin/sh
COUNTER="$1"

DIGIT1=000
DIGIT2=00
DIGIT3=0
DIGIT4=
eval 'echo "MMF${DIGIT'"${#COUNTER}"'}${COUNTER}"'


284:283
09/08/14 15:31:27 VHMVUNf7
printfがあれば更にすっきり。

#! /bin/sh
COUNTER="$1"

printf 'MMF%04d\n' "${COUNTER}"


285:login:Penguin
09/08/14 23:08:31 vesWTwzQ
>>280 です
皆さんどうもありがとうございます。
C のswitch〜case構文のようなものかと勘違いし、case の使い方が全然間違ってましたし他にも細かなミスがありましたが、調べてこんな感じで期待通りの振る舞いができました
case $COUNTR in
?)
echo "MMF$DIGIT3$COUNTER"
??)
echo "MMF$DIGIT2$COUNTER"
??)
echo "MMF$DIGIT1$COUNTER"
1000)
echo "MMF$COUNTER"
esac
それから、seq とかeval の使い方も調べて見ます、どうもありがとう。

286:login:Penguin
09/08/14 23:17:06 vesWTwzQ
>>285です
もう一つお願いします。
シェルスクリプト というのは、そのような仕組みになってるんでしょうか?
単純にインタプリタ型の言語なのでしょうか、自分としてはそうではない気がします
なぜなら、sudo コマンドを使う場合、シェルスクリプトの場合、スイッチ を付加して実行しますが
それは直接、カーネルに対してオペレーションしているような気がするのですが?詳しい方が居られましたら教えてください。

287:login:Penguin
09/08/14 23:19:32 vesWTwzQ
×シェルスクリプト というのは、そのような仕組みになってるんでしょうか?
○シェルスクリプト というのは、どのような仕組みになってるんでしょうか?

288:login:Penguin
09/08/14 23:40:04 4UQz02FW
>>286
>それは直接、カーネルに対してオペレーションしているような気がするのですが?

気のせいです。
手始めにforkとかexecvとか調べたらいいんじゃね?


289:login:Penguin
09/08/14 23:56:56 cgRLII5a
インタプリタだよ。

sudoは、シェルとは別のプログラムです。
シェルスクリプト中で、シェルのビルトイン関数やらで無いコマンドを書くと、
シェルは、その名前のプログラムを探してそれを実行しようとします。

上に出てきた中で言うと、
while case echo evalはシェルのビルトイン関数(?)で
seq printf sudoは外部プログラムです。

「カーネルに対してオペレーションしている」云々は、
言っている意味が良く分かりません。
全ての意味のあるプログラムは、直接的にしろ間接的にしろ、
カーネルと相互作用するはずですから。

290:login:Penguin
09/08/15 01:56:48 niIslDjl
while, case と echo, eval はくくりが別だけどな。
type while とか type echo とかやってみ。

291:login:Penguin
09/08/15 19:58:45 4JYHgxvW
>>286 です
皆さんThxです。

292:login:Penguin
09/08/15 23:51:22 O3QLwBfx
read packetcount
read port
tcpdump -n -c$packetcount -s1500 -vvv -X port $port
こんな感じでパケット見てるんですが、1パケットごとに色を変えることは出来ますか?
文字色の指定方法はわかるんですが、そういった指定方法や手法があればおしえてもらえないでしょうか。
なければおとなしくあきらめます。


293:login:Penguin
09/08/16 02:00:07 kxH41sn/
>>292
色は無理。
portが読み込まれていない。

294:login:Penguin
09/08/16 02:32:16 m+r83sIL
>>292

C1="$(tput setaf 0)"
C2="$(tput setaf 1)"
tcpdump -n -c 10 -s 1500 -vvv -X | while IFS="" read l;do
if [ "$l" = "${l#$'\t'}" ]; then
echo -n "$C1"
A="$C2";C2="$C1";C1="$A"
fi
echo "$l"
done

こんな感じ?
>>293の言っている意味がわからないので外してるかも…。

295:login:Penguin
09/08/17 09:43:35 WnQqR0f7
#!/bin/bash
echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|";
ちょっとおおざっぱですが上記の方法でtopの内容を抜き取ってます。
Windows付属のハイパーターミナルで見ると普通に表示されるのですが、他のターミナルソフトで(tera termとか)で見ると
Cpu(s): 1.2%us, 1.2%sy, 0.0%ni, 96.3%id, 1.1%wa,erial8250: too much work for irq4
0m 0.1%hi, 0.2%si, 0.0%st|
こんな感じで途中にerial8250〜と表示されます。
これを検索してもそれらしいものも出てこず、何が原因かわからないでいます。
原因をご存じの方いましたらヒントかアドバイスもらえると助かります。

296:login:Penguin
09/08/17 11:19:54 Pf83pCV6
>>295

コピペ間違ってないかな?
「serial8250: too much work for irq4」なら
次のページが引っかかった。
URLリンク(eve-japan.co.jp)

ターミナルソフトによって異なるのは$TERM の問題なのかな?
表示自体は 単に stderr へのメッセージが表示されてるのか
とおもうけど。「2>/dev/null」とかつけたら 変わるのかな

297:295
09/08/17 11:55:51 WnQqR0f7
>>296
文字コードとかの問題でsが抜けてるっぽいです。
ログを見たら同じ記述があったのでメッセージが画面に出てるっぽいですね。
方法としては破棄する(やり方調べないといけないけど)かserial8250: too much work for irq4をsedとかで
消し去るくらいでしょうか。
スマートではないですがとりあえず消し去る方向で行ってみます。
ありがとうございます。

298:login:Penguin
09/08/17 12:12:38 cm75eODq
シリアルコンソールだよね?
カーネルがprintkで出してるからsedとかじゃムリだと思う。

消したいなら/proc/sys/kernel/printkをいじるとか。

299:297
09/08/17 12:52:29 WnQqR0f7
>>298
ありがとうございます。
調べて6417を5417に替えようとしたら"printk" E667: Fsync failedとか出てきて
書き換えさせてくれませんでした。
解決方法はまだわかってませんがなかなかハードルが高そうです。

300:297
09/08/17 13:10:38 WnQqR0f7
補足です。

echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|";
の部分を消したら表示されなくなりました。
topした時だけ出てるみたいです。理由はわかりませんが。
top内容を >> top.datとかに書き出してそこから引っ張ってくれば
表示されないようになるかもしれません。
根本的な解決にはなってませんが・・・。

301:300
09/08/17 17:13:08 WnQqR0f7
さすがにスレ違かと思いますが、/proc/sys/kernel/printkというのはviでの編集は不可ですか?
ググってはいるんですが編集が出来ずに困っております。
もしかしたら凄い見当違いな事を行っているのかもしれませんが解決のヒントもらえると助かります。


302:login:Penguin
09/08/17 17:20:05 R0skv6Jz
>>301
さすがにスレ違い。

303:300
09/08/17 17:30:37 WnQqR0f7
>>302
すいません。
くだ質に行ってみます。

304:login:Penguin
09/08/18 06:39:39 elYCry/8
>>301
echoするもんでしょ。JK。

305:login:Penguin
09/08/18 08:01:40 8XgVhYMF
そうか?
sysctl -w kernel/printk=foobar

306:login:Penguin
09/08/18 09:35:31 BInCpQzK
もうくだ質に移動したよ。

307:login:Penguin
09/08/18 18:39:48 S4j+NJGU
moge.dat
testjama na moji

sakujo="jama na moji"
okikae=""
echo `more /tmp/moge.dat | grep '^test' | sed -i s/$sakujo/$okikae/g`

これでmoge.datの中からtestだけ表示出来るのではないかと思っていたのですが
sed: -e 表現 #1, 文字数 13: 「s」コマンドが終了していません
というエラーが表示されます。オプションで-eも使用していませんし構文的には大丈夫そうに思えたのですが
間違いがあればご指摘いただけないでしょうか。

308:login:Penguin
09/08/18 19:03:56 9vBuj+t/
sed 's/jama na moji//g' moge.dat

じゃいかんのか?
なぜechoしたりmoreしたりgrepしたりするのか意味わからん

309:login:Penguin
09/08/18 19:12:00 I/MV7qz2
sed の -i はなぜつけているんだい?

310:307
09/08/18 19:31:44 S4j+NJGU
>>308
単純にmoreで見た中身をgrepしてそこからさらに削ればいいのかなと思い
検索をしてパイプでつなげただけの状態です。
また説明が足りませんでしたがmoge.datは複数行あってtestから始まる行が
いくつかあったことから素人考えでこのようになりました。

>>309
すいません。
別の場所のsedをコピーしたときについたみたいです。
この場合は必要ないですね。

311:login:Penguin
09/08/18 19:37:15 9vBuj+t/
sed '/^test/s|jama na moji||g' moge.dat

312:login:Penguin
09/08/18 19:43:42 0jjNf9FI
>>307の直接の答えを言うと、

sed -i s/$sakujo/$okikae/g

sed -i s/jama na moji//g

sed -i 's/jama' 'na' 'moji//g'

と引数4つに解釈されるから。

313:login:Penguin
09/08/18 22:00:14 elYCry/8
>>306
マルチって死ねばいいと思う

314:login:Penguin
09/08/18 22:23:21 Df7zfcy/
スレ違いを指摘されて移動してるんだから、マルチとは言わないだろ

315:login:Penguin
09/08/19 11:19:58 zpPUbNQu
ログをとりたくてmessagesに内容を出すようにしたいのですが
echo "logtest" >> /var/log/messages
としても書き出されません。
このファイルとユーザー自体はrootではないので権限が問題かと思ってます。
このexampleユーザーはwheelに入れており、sudoで%wheel ALL=(ALL) ALLと念のため指定しましたがダメでした。
これは構文自体が間違っているということでしょうか。


316:login:Penguin
09/08/19 11:38:22 GJ3CGMhT
>>315
sudo echo "logtest" >> /var/log/messages
とかやったの?
これだと >> 以下は sudo の外にあるから効かない。
sudo sh -c 'echo "logtest" >> /var/log/messages'
とかやればいい。

つーか logger で書いたら。

317:login:Penguin
09/08/19 15:03:44 9fjqV7Pu
コマンドの実行結果を>>で適当なテキストに出力して見てみると
[H [J [0;10mtop - 20:06:35 up 51 min, 3 users, load average: 0.00, 0.00, 0.00 [0;10m [39;49m [K
いろんなコマンドでこんな感じになってるんですがこれは何なのでしょうか?
これはtop内容ですがなぜこうなるのかがわかりません。
表示されている文字だけをテキストに出したいのですがどうすればいいでしょう
か。

318:315
09/08/19 15:07:02 zpPUbNQu
>>316
素早いレスありがとうございます。
1個の命令として見られていなかったわけですね。
loggerでかけるところはそうしたいのですが、他にもいくつかファイルがあって
そちらでも追記したいと思っておりました。
まだ試してませんがこれでいってみたいと思います。


319:login:Penguin
09/08/19 15:08:58 yGi4QWIv
topの人はtopの何を切り出したいのだ?
ロードアベレージ?

320:login:Penguin
09/08/19 15:09:49 GJ3CGMhT
>>317
top なら -b で。
>>261 でも書いたはずだが。

321:login:Penguin
09/08/19 15:16:10 GJ3CGMhT
>>317
ファイルへの出力は
基本的にはただの文字を順に追記していくだけ。
画面への出力は文字を反転させたり色を変えたり
いったん書いたものを戻って書き直したりする。
画面用の出力をそのままファイルに出すとおかしなことになる。

322:login:Penguin
09/08/19 21:31:13 rKA7cUBO
echo "logtest" | sudo tee -a /var/log/messages

teeってマイナー?

323:login:Penguin
09/08/19 22:00:23 ZZH7H5sc
いやんバカんな事やってないで、きちんとloggerを使いなさい。

324:login:Penguin
09/08/19 22:31:33 S8kRS54+
シェルにloggerなんてあるの?

325:login:Penguin
09/08/19 23:54:53 Gto2VsIQ
------------------------- 今からこのスレは外部コマンド禁止になりました -------------------------

326:login:Penguin
09/08/20 00:22:53 z7LXRLpP
シェルの組み込みコマンドだけでやれってか?
厳しいな。。

327:login:Penguin
09/08/20 10:46:36 D2EfC5ES
>>324
それ言ったら sudo だってないじゃん。

328:login:Penguin
09/08/20 11:47:57 tKteNA5S
今、ネットワークカードを通過するトラフィック量をRRDToolを使用してグラフにしたくて
1秒あたりの送信・受信をバイトで求めるスクリプトを書いたつもりなのですが、
これでちゃんと値が求められているのか、自分ではよく分からないのです。
それっぽい感じの値は出てきてるんですが・・。

そこでなのですが「ここが違う」「そもそもそれじゃダメ」などということがありましたら、
教えていただきたく、ここに書き込まさせていただきました。
もし、お時間がありましたら添削していただけると嬉しいです・・・。

func_ethernet()
{
UserName="UserName"
AuthPass="AuthPassWd"
PrivPass="PrivPassWd"
HostName="localhost"
if [ $1 = "send" ]; then
 LogName="/tmp/log-send"
 LogOld=`cat ${LogName} | sed -n 2p`
 LogOldTime=`cat ${LogName} | sed -n 1p`
 date +"%Y-%m-%d %k:%M:%S" > ${LogName}
 /usr/bin/snmpget -a MD5 -A ${AuthPass} -l authPriv -u ${UserName} -x AES -X ${PrivPass} -v 3 ${HostName} .1.3.6.1.2.1.2.2.1.16.2 | awk '{print $NF;}' >> ${LogName}
 LogNew=`cat ${LogName} | sed -n 2p`
 LogNewTime=`cat ${LogName} | sed -n 1p`
 echo | awk '{print ( (newValue - oldValue) / (newTime - oldTime) );}' newValue=${LogNew} oldValue=${LogOld} newTime=`date -d "${LogNewTime}" +"%s"` oldTime=`date -d "${LogOldTime}" +"%s"`
elif [ $1 = "recive" ]; then
 略
fi
}
rrdtool update ${RRD_PATH}/ethernet.rrd N:`func_ethernet send`:`func_ethernet recive`

329:login:Penguin
09/08/20 12:00:54 3vJ7EKjF
文字色と背景色ついて質問です。
わかりやすく色をつけてみたのですがこの場合は文字の部分のみが緑文字と黒背景となります。
#!/bin/bash
echo -en "\033[32;40m";
select i in "123" "456"; do
[ -n "$i" ] && break
done
case "$i" in
123) func123;;
456) func456;;
esac
文字ではない部分も黒背景とする事は可能ですか?

330:login:Penguin
09/08/20 19:05:04 KNtykgpF
まずエスケープシーケンスを直接指定するのはよくない
端末によってサポートされている機能に違いもあるし

「文字ではない部分」の意味も不明

行単位ということなら

#!/bin/sh
tput setab 0
tput setaf 2
tput el
echo "Hello"

331:login:Penguin
09/08/21 00:19:49 F/0U9rwq
文字ではない部分ってのはその通りだろう。
文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね?
\033[32;40mはせめて
ESC=\033[
midori=${ESC}32
とかにしたほうがいいと思う。もっといい方法あればえらい人が教えてくれるはず。



332:login:Penguin
09/08/21 00:26:48 korZcQ4D
>>331
tput使えよ。

333:login:Penguin
09/08/21 00:34:42 G/rWMdtH
すみませんが組み込みコマンドだけでお願いします

334:login:Penguin
09/08/21 00:41:38 korZcQ4D
>>333
busyboxにshとtputが入ってる場合はOK?

335:login:Penguin
09/08/21 00:53:50 hq/n18x3
>>331
> 文字の背景の色を指定は出来るが、文字以外のところの背景色はどうすってことじゃね?

だから, 画面全体をそうしたければclearすればいいんじゃね
文字を書き込んでいない*どの部分を*背景色にしたいんだ, って話

336:331
09/08/21 07:39:21 F/0U9rwq
tputなんてあるわけね。
シェルに標準でそういうのあるの知らなかったよ。

>>335
文字がかかれてない場所全部じゃね?
ようは画面全体の背景色を指定したいってことだと思うけど。
文字と文字の背景色は\033[32;40mで指定できるけど
それ以外の全体の背景色という意味だと思う。


337:login:Penguin
09/08/21 07:45:26 korZcQ4D
>>336
とある端末だとそうですね。


338:login:Penguin
09/08/21 11:30:52 90eN5uxA
そういうの意識するほどたくさんの機器がないからだとおもうけど
俺はVT100でだいたい表示されてればOKかな〜とか勝手に思ってる。
ネットワーク機器だとやっぱりまだANSIとかが標準になってたりするのかな?
さすがに最近のネットワーク機器でVT52が標準とかってことはないと信じたいけど。

339:login:Penguin
09/08/21 17:12:14 hq/n18x3
>>336
> ようは画面全体の背景色を指定したいってことだと思うけど。

>>335

行単位なら >>330
カーソル位置からscreenの最後までならelの代わりにed使えばいい

340:login:Penguin
09/08/21 23:42:11 korZcQ4D
所謂、ブルースクリーンを作りたい。

341:login:Penguin
09/08/22 19:41:23 iygx6FPk
# word.lst
あいうえお aiueo
かきくけこ kakikukeko
さしすせそ sasisuseso

#target.txt
なにぬねの
あいうえおキター
たちつてと
さしすせそ
キターかきくけこ

word.lst の区切文字はTAB 、またはSPACE とします
target.txt を一行ずつ読込み、word.lst のキーとなる単語があれば、
置換しdest.txt に出力するシェルスクリプトの書き方を教えて頂けないでしょうか。

#dest.txt
なにぬねの
aiueoキター
たちつてと
sasisuseso
キターkakikukeko

342:login:Penguin
09/08/22 19:49:19 +xcsiCNS
まず服を脱ぎます

343:341
09/08/22 20:44:33 iygx6FPk
while read line
do
  処理(TARGET=あいうえお、DEST=aiueo)
done < word.lst

例えばこのように、line で読込んだ
あいうえお aiueo
を変数TARGET、 DEST に格納する方法を教えてもらえませんでしょうか。


344:login:Penguin
09/08/22 21:14:08 +xcsiCNS
set $line
TARGET=$1 DEST=$2

345:login:Penguin
09/08/22 21:44:23 beHpftLf
すぐ書ける簡単なやり方で

#!/bin/sh
while read from to
do
    echo "s|$from|$to|g"
done <word.lst >program
sed -f program <target.txt >dest.txt

346:login:Penguin
09/08/22 23:46:26 m2+LmGIC
>>345さん、お世話になります
掲示していただいたスクリプトでの置換ですが、>>341 で掲示したファイルの置換は期待通りの結果になるのですが
下記のような内容のファイルだと全く置換できません、なぜなのでしょうか?

#target.txt
CREATE TABLE `利用明細` (
`伝票番号` INTEGER AUTO_INCREMENT DEFAULT NULL ,
`商品ID` INTEGER DEFAULT NULL ,
`数量` INTEGER DEFAULT NULL ,
PRIMARY KEY (`伝票番号`)
);

#word.lst
伝票番号 DENNPYOUBANGOU
数量 SUURYOU

347:login:Penguin
09/08/23 00:31:10 aCd7CupH
>>346 です
解決しました、文字コードを錯誤してました(^^;


348:login:Penguin
09/08/26 02:39:26 5uGOu/R4
1000文字ごとに改行を入れる簡単な方法を教えてもらえませんか

349:login:Penguin
09/08/26 04:35:48 aiWYMJf6
これ、俺は思いつかない、ラテン文字だけなのか、マルチバイト文字も混在してるのか
こういうのは、やっぱ、perlやrubyが得意だ

350:login:Penguin
09/08/26 04:41:51 r5TfqoXR
nkf -f 1000

351:login:Penguin
09/08/26 14:07:13 ehP4IQnp
abcdefgabcdefgabc ...
と続く文字列にn文字ごとに「,」を入れてcsvにするにはどうしたらいいですか?

352:login:Penguin
09/08/26 14:24:34 LXSFF2c5
echo abcdefghijklmnabcdefghijklmnh | sed 's/\(.\{5\}\)/\1,/g'

353:login:Penguin
09/08/26 14:28:23 z6vBIwzM
echo 'abcdefgabcdefgabc' | sed 's/\(.\{変数n\}\)/\1,/g'



354:login:Penguin
09/08/26 14:29:09 z6vBIwzM
重複スマソ

355:login:Penguin
09/08/26 15:46:39 ehP4IQnp
>>352 >>353
thanx!!

356:login:Penguin
09/08/26 18:44:54 whFI2cwY
list.txtのなかにURLが一行ずつあり,
そのURLをw3mでアクセスしてその結果を
URLからhttp://を除いたファイル名で保存したいのですが
#!/bin/sh
FILE=list.txt
while read LINE
do
$OUT=`echo $LINE |sed 's/URLリンク()'`
w3m -dump $LINE > $OUT
done < $FILE

これだとダメになってしまいます.とりあえずlist.txtにはURLリンク(google.net)を入れています.

357:login:Penguin
09/08/26 18:54:19 LXSFF2c5
s#URLリンク(##)
とか区切り文字を変える。
$OUT=
の$は不要。

358:login:Penguin
09/08/26 18:54:58 CSCAGJKR
とりあえず$OUTはOUTのtypoだよな
あとはsedのマニュアルでも読んどけ

359:login:Penguin
09/08/26 18:59:39 z6vBIwzM
>>356
どうダメなのか具体的に書いてくれないと。
とりあえず sed 's/URLリンク()' はダメ。
区切りに使う文字(ここでは / )はエスケープしないと。

あるいは、違う文字(例えば @)で代用する。
$ echo 'URLリンク(www.example.com)' | sed 's@^URLリンク(@@)'
www.example.com/

360:login:Penguin
09/08/26 19:00:34 z6vBIwzM
また重複してしまった。吊ってくる。
λ..

361:login:Penguin
09/08/26 19:01:21 whFI2cwY
>>357-358
ありがとうございます.うまくいきました.$OUTはミスです.ありがとうございました.

362:login:Penguin
09/08/26 19:03:00 whFI2cwY
>>359
ありがとうございます.区切り文字を変えてうまくいきました.

363:login:Penguin
09/08/26 19:03:13 CSCAGJKR
やったね!

364:login:Penguin
09/08/26 22:21:29 AG79amBH
UTF-8 BOM が付いててもshスクリプトが動くシェルってある?

365:login:Penguin
09/08/26 22:34:36 aJjlwaDy
スレ違い。

366:login:Penguin
09/08/26 23:27:14 LXSFF2c5
>>364
別にスレ違いじゃないんじゃね?

カーネルで、ファイルの先頭2バイトが'#!'の場合をスクリプトと
しているのでBOMついてたら実行できない。

sourceしたときって意味なら…試したこと無いからわからん。

367:login:Penguin
09/08/27 00:13:17 99inMd3q
>>365
分からないことは全部スレ違いーw

368:login:Penguin
09/08/27 00:14:49 99inMd3q
>>366
シェルスクリプトってexecvできるってことか。てっきりsystemで動かしてると思ってた。

369:login:Penguin
09/08/27 13:09:03 1TOKv6MA
ファイルを読み込んで最後の5行だけ表示したいんだけど
最後の5行ってのをどうすれば計算できますか?
とりあえず
#!/bin/bash
while read LINE; do
echo $LINE
done < "test.file"
ってので行けると思うんですが、行数カウントとかどうすればいいでしょうか?

370:login:Penguin
09/08/27 13:27:38 bqfxDAXQ
tail

371:login:Penguin
09/08/27 15:06:58 g/ERTIS/
>>369
一番簡単なのは、tailコマンドに丸投げすること。

初心者だが、シェルスクリプトで書いてみた。
queueを使おうと考えたが、配列の添え字が循環するデータ構造にしてみた。
うまく動きましたよ。

372:369
09/08/27 15:59:46 1TOKv6MA
#!/bin/bash
dat=`tail -n 5 $logdat`
SAVE_IFS=$IFS
IFS='
'
CNT=0
for BUF in $(cat $logdat)
do
CNT=$(expr $CNT + 1)
done
IFS=$SAVE_IFS

こうしてみたら
cat : **************************** : そのようなファイルやディレクトリはありません
とか出るんだけど何故ここで「cat」とか「そのような〜」とか出るのかわからん。
書き方間違ってますか?

373:login:Penguin
09/08/27 16:07:37 GGkjBXca
よく見てみろ。7行目にcatがあるぞ

374:372
09/08/27 17:02:32 1TOKv6MA
うげっ!
めちゃめちゃ初歩的ミスやらかしてる

修正してうまく動くようになったです。
恥ずかし・・・

375:364
09/08/29 04:48:03 oAtS9pnj
レス遅れましたが、ありがとうございます>>366
bash等ではなくてカーネルに依るとは分かりませんでした。
winだとBOM付ける方がスタンダードっぽい
のでどうにかなるか、考えたもので。

376:login:Penguin
09/08/29 09:39:58 l0gsahaz
>>375
>winだとBOM付ける方がスタンダードっぽい

SJISだろSJIS。

377:login:Penguin
09/08/29 10:52:08 VmNW8gRO
URLリンク(www.youtube.com)
これは新しい

378:login:Penguin
09/08/29 10:56:18 l0gsahaz
while [ 1 == 1 ]

がキモイ。trueでええやん。

379:login:Penguin
09/08/29 10:59:15 Tfl9hfvi
while :

380:login:Penguin
09/09/10 22:53:09 io9H5fc4
grepは検索に一件もひっかからなかったら、何も返してきませんよね
if [grep ほげほげ !=  ""]
とnullと比較したいのですが、実行すると文句を言ってきます
grep -c ほげほげ = 0とすることもできますが、勉強のために書いているので
それはさけたいです
初歩的な事ですいません、ぜひエロい方に教えてもらいたい

381:login:Penguin
09/09/10 23:27:42 kkfd/kxq
>>380
くだ質の人?マルチポスト乙。
とりあえず、もっと基本的な事を勉強した方がいいと思うよ。

grep .......
if [ $? ]; then
  echo "マッチ成功"
else
  echo "マッチ失敗"
fi

382:login:Penguin
09/09/10 23:35:17 kkfd/kxq
>>380
あー、すまなかった。

>実行すると文句を言ってきます

どう文句言われるのかを書かないとね。
たぶん、[grep ほげほげ !=  ""] を [ grep ほげほげ !=  "" ] にすればうまく動くと思う。

'[' と ']' との間にはスペースを入れることに注意。
実は [ ] はコマンドだから、スペースを入れないと式が引数として扱われない。

こう説明すれば理解できるだろうか。
以下の(1), (2)は等価である。

(1) if test -f /etc/passwd; then 文; fi
(2) if [ -f /etc/passwd ]; then 文; fi

383:login:Penguin
09/09/10 23:41:36 kkfd/kxq
コマンドじゃねーや。間違い。

ところで全角スペースがあるのが気になるのだが、そこは大丈夫なのか?

384:login:Penguin
09/09/11 00:14:43 r5Zq4SIa
>>382
> 実は [ ] はコマンドだから、
[ がコマンド。(bash の内部コマンド)

> こう説明すれば理解できるだろうか。
かえって混乱するんじゃね。

385:login:Penguin
09/09/11 00:53:31 tUDxxMlL
[ は内部コマンドではない

386:login:Penguin
09/09/11 00:55:26 sW2bvbaU
>>385
help [

387:login:Penguin
09/09/11 01:18:00 1ovlFoMD
cshです。

a.cshの実行中にb.cshを実行したいです。
で、a.cshで宣言した変数をb.cshでも引き継ぎたいのです。
さらに、b.cshに引数を渡して実行したいのです。

a.cshの実行中に
csh b.csh だと引数をつけて実行できますが、変数が引き継がれないようです。
source b.cshだと変数は引き継がれますが、引数をつけて実行できません。

どうしたらいいのん。

388:login:Penguin
09/09/11 05:26:58 bKplMqH/
/usr/bin/[の方も、昔は/usr/bin/testへのハードリンクだったが
今は違うんだな。やっぱり日々勉強しないと…

389:login:Penguin
09/09/11 07:46:22 r5Zq4SIa
>>385
type [

390:login:Penguin
09/09/11 08:15:42 9DDccZ59
>>387
>source b.cshだと変数は引き継がれますが、引数をつけて実行できません。
引数をつけて実行できるんじゃない?
::::::::::::::
a.csh
::::::::::::::
#!/bin/csh -f
set val="hello"
echo "a.csh:$* $val"
source b.csh 1 2 3
echo "a.csh:$* $val"
::::::::::::::
b.csh
::::::::::::::
#!/bin/csh -f
echo "b.csh:$* $val"

% ./a.csh
a.csh: hello
b.csh:1 2 3 hello
a.csh: hello

391:login:Penguin
09/09/14 22:11:59 VDeHYP1G
#!/bin/bash
trap "logoutfunc_ctrl; logout" 1 2 3 15

最初の2行にこう記述してるんですが、logoutせずにプロンプト画面に戻る方法がありますか?
bashにこのシェルを書いているのでログイン後は必ずこのシェルが立ち上がるようになってます。
このシェルを実行するのは特定のユーザーのみで、他にこのシェルがあるサーバーにログインは出来ません。
(他のユーザーはrootを除いて全てログイン出来ないようにしてます)
プロンプト画面には触らせないようにしたいのですが、これでプロンプトに抜けれるという人がいるので
どういった方法があるのか教えていただけないでしょうか。


392:login:Penguin
09/09/14 22:59:21 SeJGwizk
なんかよくわからんけど
ログインシェルを変えちゃったら。

393:login:Penguin
09/09/14 23:18:36 DAW4cbiO
trapでlogoutしてるのにそんなこと出来るの?
おれも悪さされないようにtrapでlogoutしてるからもしそういう抜け道あるなら対策したいな。

394:login:Penguin
09/09/15 23:31:19 XlHfxREn
>>391
Ctrl+Z?

395:login:Penguin
09/09/16 01:29:49 N6PYBStw
SIGTSTPもそうだけど、普通にbash起動できたりしないの?

396:login:Penguin
09/09/17 16:40:19 y7kbSG6/
現在、/ 配下に次のディレクトリがある(CentOS 5.3)。

bin boot dev etc home lib lost+found media miscmnt net opt proc root sbin selinux srv sys tmp usr var

で、例えばの話なんだけど、/var以下と/etc以下のファイルで72時間以内に更新されたファイルだけを検索するために、
/var以下と/etc以下だけを検索するんじゃなくて、/varと/etcの両ディレクトリ以外を検索対象から除外した上で
/ を検索する、という手法をとる場合、次のようなワンライナーが考えられる(改行してるけど実際は一行)。

find / \( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*'
-o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*'
-o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*'
-o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o
-type f -mtime -3 -print

で、これを

find / $OPT -type f -mtime -3 -print

と書くために、

OPT=\( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*'
-o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*'
-o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*'
-o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o

とシェル変数を定義する(改行してるけど実際は一行)。で、次を実行するとエラーとなる。

# find / $OPT -type f -mtime -3 -print
find: パスは評価式の前におかなければならない
Usage: find [-H] [-L] [-P] [path...] [expression]

これ、エラーになる原因と対策方法分かる人いたら誰か教えて。

397:login:Penguin
09/09/17 16:45:22 HEpWOKWA
ここでも読んどけ

業務でラクするためのUNIXテクニック集
URLリンク(codezine.jp)

398:login:Penguin
09/09/17 16:53:55 zpBnmmE6
>>396
とりあえずecho $OPTして良く考える。

でも目的からいって find /etc /var ... でいいと思うんだがなんでそんなめんどくさいことするの?

399:login:Penguin
09/09/17 16:57:51 ih+TQz/f
次のようなワンライナーが考えられる、って書いてあるし
宿題じゃないの

400:login:Penguin
09/09/21 16:40:00 nYMA5TsQ
>>396の方法の是非は置いといて、
一気に難しい事やろうとしてダメな場合にそのままデバッグしようとする姿勢からして間違ってるのね
最も確実にできる単純な所からOKなのを確認しつつ、少しずつ複雑化していけばいいのにね
単純化もせずにここにポストしちゃうのもダメなのね

401:login:Penguin
09/09/22 01:02:32 CsobNaX3
>>396
> エラーになる原因

> OPT=略 -prune -o
-prune と -o は、OPT= って式の右辺とは認識されていない。

402:login:Penguin
09/09/22 21:32:32 tUDMNFi9
WinでSJISだろSJISって言った人は誰ですか
無知はレスしなくていいと思うぞ

403:login:Penguin
09/09/24 23:42:28 SAfgo/2/
shでプロセス置換をすることはできますか?

404:login:Penguin
09/09/25 07:39:03 DPMjFFBq
exec ?

405:login:Penguin
09/09/25 08:28:22 Kq0dBVoG
bashの<(hoge)のようなやつです

406:login:Penguin
09/09/25 09:10:47 fabAV8W5
普通のshにはないんじゃないかな。実はshという名前でも実体はbashという
こともよくあるが。ないときはmkfifo使えばなんとかなりそう。

407:login:Penguin
09/09/25 09:28:37 Kq0dBVoG
>>406
mkfifoを使ってみます。
ありがとうございます。

408:login:Penguin
09/09/25 09:49:07 7/BCzuXv
>>403
sh って、どの sh?

409:login:Penguin
09/09/25 19:55:47 Kq0dBVoG
>>408
shって何種類もあるんですか?

410:login:Penguin
09/09/26 16:08:50 Jy0DLp0d
>>409
約2000種類くらいある。

411:login:Penguin
09/09/26 16:27:53 XBVVzvrd
一行目の
#!/bin/sh
みたいな表記ってなんていうんだけ?

412:login:Penguin
09/09/26 16:29:13 Jy0DLp0d
>>411
マジックナンバー

413:login:Penguin
09/09/26 16:58:06 v336ZdvP
ホラ吹きはやめなはれ

414:login:Penguin
09/09/26 17:36:19 pX1JKn/Q
shebang

415:login:Penguin
09/09/27 18:09:06 251MLAqQ
あるフォルダの中のフォルダのうち中身が空のフォルダをまとめて削除するにはどうすればいいですかね?

416:login:Penguin
09/09/27 18:14:24 Co+mxy4N
find あるフォルダ -type d -empty かな

417:login:Penguin
09/09/27 18:17:18 bShqvf/m
find . -type d -exec rmdir --ignore-fail-on-nonemytp -p {} \;

418:login:Penguin
09/09/27 18:36:06 251MLAqQ
>>417
rmdir: failed to remove `.': 無効な引数です
とのことでした。。

>>416
rm -r `find . -type d -empty`としたら期待通りの動作をしてくれました!

有難うございました。

419:login:Penguin
09/09/27 18:44:30 ZlHSYQ4N
何も言うまい

420:login:Penguin
09/09/27 21:31:53 qHK4F1Gh
ストリームから特定のバイト数分だけ読み出すことは出来ますか?
例えば標準入力の先頭1024バイトだけ読みたいのですが、readやらheadでは
できないみたいでつ。

外部の処理系に投げるしかないのでしょうか。

421:login:Penguin
09/09/27 21:33:25 qHK4F1Gh
すみません

head -c 1024

で事故解決しました。

422:login:Penguin
09/09/28 12:47:00 VZAZLgKn
Bash で並列処理はできますか?

バックグラウンドでプロセスを実行する方法が考えられますが
標準出力を変数に代入できません。

スレッドみたいなものがあればいいのですが。
アドバイスよろしくです。

423:login:Penguin
09/09/28 13:23:09 RgE5Se+Y
>>422
凝ったことやりたいならちゃんとした言語使った方がいいんじゃないの。

424:login:Penguin
09/09/28 14:19:04 I6g/kNjx
>>422
標準出力の代わりにファイルを利用するだけでいいと思うけれど
何か制限とかあるの?

425:login:Penguin
09/09/28 22:19:09 mq5nI+Gq
>>422
waitとかって使えなかったっけ?

426:422です
09/09/28 22:48:49 ZC7KG7rU
>>424
それも考えたのですが、ちょっとアレゲな文字列を渡したいので
なるべく標準入力経由で流し込めたらいいなーと。

>>425
waitするのはいいのですが、
s=`sleep 10; echo hi` &

これだと、確かにバックグラウンドで実行されますが、出力が変数sに代入されません。

とりあえずtmpfile作ってお茶を濁すか、
スレッドをサポートしている他の言語で書いてみます
ありがとうございました。

427:login:Penguin
09/09/29 09:01:16 PNFzix6B
アレゲな文字列だとなぜ標準入力にしたいのだろう??

428:login:Penguin
09/09/29 22:03:38 to/uYF9s
fifoが使えれば便利なんだけどな。

429:login:Penguin
09/10/23 00:04:27 wj32ZQ75
bash@sygwinです。

echo -e `hoge.exe`
みたいなスクリプトを書いて実行した場合、
hoge.exeの出力(標準出力へ出力)が改行されないのですが、
開業して表示されるようにするにはどうしたらいいですか?

430:login:Penguin
09/10/23 00:06:21 fL6bmEfB
hoge.exe


431:429
09/10/23 00:07:47 wj32ZQ75
サンプルとして hoge.exeとしましたが、
実際は引数をとるプログラムであり、そのためにスクリプトを書いています。

432:login:Penguin
09/10/23 00:08:01 egc7pXKl
printfでおk

433:EriFWUWPcvxE
09/10/23 00:26:28 o9S12OWs
In the case of a clock it is, of course, infinitely unlikely. ,

434:login:Penguin
09/10/23 01:18:00 lIwBP5a7
>>429
| と nkf か iconv かなんか使って
改行コードを変換すればいいかと。

435:login:Penguin
09/10/23 07:31:49 sqWecNL1
要するに、
$ echo `ls`
で改行されないと言ってるんじゃないの?
素直に
$ ls
と打てカス じゃ駄目か。

436:login:Penguin
09/10/23 07:52:35 fL6bmEfB
>>435
>>431を読むに、ダメなんだろう。

437:login:Penguin
09/10/23 10:22:31 iTZCWKBJ
echo "`ls`"

438:veylKBAi
09/10/23 22:03:01 t9W+SBEv
And you get to travel to interesting places and talk to interesting people about interesting questions. ,

439:login:Penguin
09/10/23 22:40:25 fL6bmEfB
Yes I like rice ball.


440:login:Penguin
09/10/25 05:44:06 nuWGLSpK
This is a Tom

441:login:Penguin
09/11/04 22:54:27 MYi0pRqJ
Bash シェルスクリプトで、
実行後にコマンドラインに文字列を入力した状態にするのは
可能ですか?

$ ./x.sh
$ abc ←'abc' が入った状態にする

シェルスクリプトでなくて、C とかでもよいですが。


442:login:Penguin
09/11/05 10:53:31 yUF/IyOA
>実行後にコマンドラインに文字列を入力した状態にするのは
set ?

>$ ./x.sh
>$ abc ←'abc' が入った状態にする
read ?

443:441
09/11/05 19:29:56 gkVZzLQn
x.sh が終了した後に、
コマンドラインにキーボードで 'abc' と入力した状態になっている
という意味あいです。


444:login:Penguin
09/11/05 19:59:20 NZnr/6iR
それ、もしできるのなら
セキュリティ的にマズーくないか?

445:login:Penguin
09/11/06 00:09:34 eRT3M+Ha
>>443
なんでそんなことしたいの?

446:login:Penguin
09/11/06 08:33:57 mW6ePEE5
小数点第三位くらいの数値を1000で割りたいのですが、bcで計算すると0.123456が.123456にされてしまって正しくrrdtoolに値を渡せなくて困っています。
どなたか対策をご存知の方がいらっしゃいましたらご教授頂けないでしょうか。


447:login:Penguin
09/11/06 12:03:55 eRT3M+Ha
>>446
sed 's/^\./0./'

448:441
09/11/06 19:41:15 /t9QHrwg
>445
ctrl-r で、history のリストから検索して、
ctrl-e とすると、実行ではなく編集になりますよね、
あれがやりたかったんです。

ただ、その検索の部分を(例えば)grep で検索したり、
選ぶ部分をメニュー形式というか対話型にしたり、(その他もろもろ)
結果を実行ではなく、編集にしたい。
なので、シェルスクリプトとかで実行した結果をコマンドラインに
入れられないかなと思ったんです。
ちと無理だったかな。

>>442,444,445 どうもです。

449:login:Penguin
09/11/06 19:45:45 q+Z8sAfI
eshell使えば

450:login:Penguin
09/11/06 19:46:49 eRT3M+Ha
>>448
コマンドラインに戻す必要あるのかな。
そのアプリの中で編集させて実行しちゃえば?

451:login:Penguin
09/11/06 21:42:41 ebfIAKEi
>>448
bashなら、↓で実現できないかな?

$ cat hoge.sh
echo `date` >> ~/.bash_history

$ sh hoge.sh

$ history -r
$ history | grep 2009
15 2009年 11月 6日 金曜日 21:37:38 JST
16 history | grep 2009
$ shopt -s histverify
$ !15
2009年 11月 6日 金曜日 21:37:38 JST
(histverifyがonだとカーソルはコマンドラインの行に位置したままで、編集可)

# 嘘書いてるかもしれんので、間違ってたら指摘求む

452:login:Penguin
09/11/06 21:57:06 ebfIAKEi
最初に
HISTFILE=/tmp/.bash_history
とかして一時ファイルにしたほうがよいかも

453:login:Penguin
09/11/06 22:03:08 CfRBFuVC
質問。環境はbashです。

URLをテキストファイルに溜め込むスクリプトを作りたくて
弄りはじめたんですが、詰まってしまったので‥ 他力本願!

希望する結果: 
$echo ${URL} > url.txt

$cat url.txt

URLリンク(aaaa.co.jp)<)
としたい。

#!/bin/bash
NUM=0
while [ ${NUM} -lt 5 ]
do
URL=`zenity --entry "$1"`
NUM=`expr ${NUM} + 1`
done

URLに複数の文字列を溜め込みたいのですがどうするべきでしょうか?
ググってみると配列?というやり方があるようなのですが、まだ理解できません

教えてください。

454:login:Penguin
09/11/06 22:17:20 wQA60fmy
>>453
zenityって何のこっちゃ。配列を使うとこうなる。

$ URL=("foo" "bar")
$ for url in ${URL[@]}; do echo ${url}; done
foo
bar

…が、単に${URL}に空白区切りのURLを入れておいて、
sedなりtrなりを通して1行ずつ出力すれば良いだけの話ではないのか?

$ URL="foo bar"
$ echo ${URL} | sed 's; ;\n;g'
foo
bar
$ echo ${URL} | tr ' ' '\n'
foo
bar

455:login:Penguin
09/11/06 23:02:57 CfRBFuVC
>>454
>zenityって何のこっちゃ。
なんか便利そうだなぁと思ってw
zenity使わんでもいいんだけど、常に端末開いてるわけじゃないから操作的に楽かなぁと‥
んで、溜め込むURLは決まってるわけじゃなくて、ブックマーク的な感覚で使うつもり。


$ URL=("foo" "bar")
は、わかったけど
$ for url in ${URL[@]}; do echo ${url}; done
は、${URL[@]} を 一行づつ url に代入して、それを一行づつ出してるってこと?

ってことは、って考えた結果

while [ ${V_NUM} -lt 5 ]
do
URL=("${URL[@]}" `zenity --entry "$1"`)
V_NUM=`expr ${V_NUM} + 1`
done

echo "${URL[@]}"

a b c d e と順に打っていったら

$ echo "${URL[@]}"
a b c d e
と返ってきた。

結果だけみると動作してるように見えるけど、合ってますか?
なんとなく配列のイメージはわかったような気がする・‥
# sed とか 正規表現 とか覚えたら色々出来そうだ。。。と夢見てる段階w

456:login:Penguin
09/11/07 00:24:25 27rGR1FA
>>455
配列の話をしているからbash前提で話すが、

・zenityが返す値(URL)を""でエスケープしておかないと、URLにスペースが含まれていたときにハマる。
・単純に5回繰り返すだけならwhileとカウンタを使うよりもforを使ったほうがいい。

for i in {1..5}; do [処理]; done
for i in `seq 5`; do [処理]; done


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5367日前に更新/221 KB
担当:undef