5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【sed】シェルスクリプト総合@LINUX Part2【awk】

1 :ミスターバッシュ:2006/08/03(木) 13:10:00 ID:5dVnjkpT
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

前スレ
http://pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

131 :login:Penguin:2006/09/25(月) 20:01:16 ID:8zKTMoIu
常套手段だったらすまん。
#!/bin/busybox ash
とかやると結構早くなるかな?

それとも各種コマンドの表現力のなさに絶望するかな。


132 :login:Penguin:2006/09/25(月) 23:30:01 ID:bEafUneY
へぇー(x3)、busybox ashでシェルスクリプト実行させると
該当する外部コマンド呼び出しはシェルコマンド的呼び出しになるんだ。
$?とか使えるからてっきりバイナリ実体の共通化だけが目的で、
コマンド実行自体は普通にfork&execしてるのかと思ってた。

それはともかく、インストーラだとかでは結果的にそれやってる訳だから、
それなりに使えるんじゃない?逆にGNU拡張とかに依存しない移植性の
高いシェルスクリプトを書けるようになるかも。

速度は・・・速くなるだろうけど、シェルスクリプトで気にするかというか。


133 :129:2006/09/26(火) 10:54:20 ID:/kN9yJk7
シェルでMySQLの起動までは出来るんですけど、その続きを自動で処理してくれません。
(MySQLにログインした後、入力待ち状態になってしまって、起動後にDBを変更してくれない)。

mysql -u mofu -pmofumofu
use mohe
select * from moeneko;

としたところログイン後の処理をしてくれずにMySQLを終わらせた時点でuseって何だゴルァと
怒られます(以降の処理も怒られます)。


134 :login:Penguin:2006/09/26(火) 11:19:28 ID:df8bksAP
>>133
echo 'use mohe; use select * from moeneko;' | mysql -u mofu -pmofumofu

135 :129:2006/09/26(火) 15:05:32 ID:/kN9yJk7
>>134
そんなスマートな方法が・・・。

mysql -u mofu -pmofumofu mohe <mofu.sql

[mofu.sql]
use mohe
select * from moeneko;

って2つのファイルにしてやってた。
問題はこのクエリを発行後、戻ってきた奴を変数に入れる方法だね。

//MySQLのレストア作業で読み込ませるファイルがCreate文とか普通に
手打ちで出来ることをテキストに纏めて順次実行してるだけなんだから、
select文とかも実行できるんじゃね?と思って試してみました。

136 :login:Penguin:2006/09/28(木) 23:39:58 ID:qmT4SbpH
シェル(使ってるのは主にbash)って、ちょっと複雑な処理をさせると、
すぐに動作が重くなるね(多重にループさせたときとか)。
同じ処理でも、Cの方が圧倒的に早い。
最適化しないのがおおきいのかな?

137 :login:Penguin:2006/09/28(木) 23:46:14 ID:kP+fnhcw
シェルは真のインタプリタ
Tcl、Perlなどはランタイムコンパイル


138 :login:Penguin:2006/09/29(金) 00:09:45 ID:ikhtZqAF
>>137
どっからperlがでてきてんだ?

139 :login:Penguin:2006/09/29(金) 00:17:43 ID:qV/OGN3K
>>136
具体的にどういう処理?

そもそもCで書かれたbash上の実行内容をCで書いたら負けるわけないだろ。
書く時間がかかるからフツーshellでやるけど。

140 :login:Penguin:2006/09/29(金) 00:19:49 ID:ikhtZqAF
>>139
>そもそもCで書かれたbash上の実行内容をCで書いたら負けるわけないだろ。

そうか?Cでアセンブラを書くことも出来るわけでな。

141 :login:Penguin:2006/09/29(金) 02:33:29 ID:AlG8EKxr
shellscriptだってバイトコードべた書きできるよ

142 :login:Penguin:2006/10/01(日) 14:53:16 ID:me3R4vLB

原点に戻ろう。ケースバイケースで使い分ければ済む事。

用途に合ってれば、バイナリをゲロする言語で結構。

そこまですることない、ってーならシェルスクリプトでいいジャマイカ



143 :login:Penguin:2006/10/01(日) 19:06:18 ID:Xo+fTZgf
>>139
遅レスだが、あるファイル内のすべてのの10進を16進に変換する処理。
(bashって、16進形式ないよね?)
アルゴリズムは16の何乗かで割っていくというよくある方法。
変換する文字が10個以上くらいになると、途端に遅くなる。

144 :login:Penguin:2006/10/01(日) 19:18:04 ID:7VdKxRNj
>>143
それシェルでやるか?
普通はbcやら計算用の他のプログラムを呼ぶと思うんだが。

そもそもシェルスクリプトは、単機能なプログラム群(test,expr,sed,awk,etc.)
のグルーとして機能して、複雑な機能の9割を短期間で構成できる所が強みだろ。
プログラミング言語としてのシェル自体の能力を語ってみてもなあ。

145 :144:2006/10/01(日) 19:21:28 ID:7VdKxRNj
16進変換自体は、bcでobase指定してもいいけど、今の時代ならprintfの方が簡単か。

146 :login:Penguin:2006/10/02(月) 14:46:13 ID:D0XdThx6
>>143みたいなジョークはおいといてw
必要ならperlやcで書いてそれをbashから使えばいいだけの事。
bashもいっぱしの言語なので他の言語で書けるアルゴリズムならbashでも書けるが
効率的にナンセンスなモノは書く前に気づけよ。
ちょいとbashで済ませる程度の事をcで書くのも効率的にナンセンス。

147 :login:Penguin:2006/10/03(火) 05:16:19 ID:FpR8NZbm
今のCPUの性能なら、基数変換程度の計算ならシェルで動かしても
そんなに時間かからないと思ったんだけど、そうでもないのね。

148 :login:Penguin:2006/10/03(火) 07:31:25 ID:EZmi0NrE
敢えてbashismを犯してまでヤル作業でもないなぁ。と言う印象。

149 :login:Penguin:2006/10/03(火) 10:52:43 ID:/JDV4iux
>>148
適材適所なので自分ではやらないいけど、
無茶する香具師がshellを改良するとか、
別のソフト作ることを期待して止めはしない。

150 :login:Penguin:2006/10/03(火) 11:41:14 ID:i4ad2dwr
そこでzshですよ

151 :login:Penguin:2006/10/03(火) 13:56:04 ID:KeekA4F/
いや、ここはscsh
http://www.scsh.net/

152 :login:Penguin:2006/10/04(水) 18:13:19 ID:nvODb2Cn
bashコンパイラを書けば解決さw
bashってのは完全にプログラマの為の道具。
プログラマって人種が極度のキータイプ嫌いでものぐさな事を如実に示しているのがbash。
通常は最も手軽に動かせる言語で、だから初心者も使うんだけど非常に迷路じみて無愛想な言語。
適材適所で言うなら初心者には最も不適な部類の言語だと思う。

153 :login:Penguin:2006/10/04(水) 19:30:49 ID:K3dljP7/
rcがいちばん。


154 :login:Penguin:2006/10/04(水) 22:38:44 ID:FNsr3Nih
inittabインタプリタが切に欲しい。

155 :login:Penguin:2006/10/04(水) 23:15:48 ID:sl6UHG36
>>152
じゃあ初心者にはなにがいいのよ?

156 :login:Penguin:2006/10/05(木) 23:25:36 ID:zAfJdDDf
csh

157 :login:Penguin:2006/10/07(土) 10:34:31 ID:81nNYwVr
氏ね

158 :login:Penguin:2006/10/09(月) 23:35:33 ID:9KuWHWOZ
二つのsort,uniqされたファイル

file1
a
b
c

file2
c

があったとして、file1-file2>file3

file3
a
b

みたいことやりたいんですが、何てコマンド使えば良いんでしょうか?

159 :login:Penguin:2006/10/09(月) 23:41:56 ID:9la7eu6H
>>158

grep -v -f file2 file1 > file3

160 :login:Penguin:2006/10/10(火) 00:48:52 ID:j7TWTFqG
>>159
ありがとうございます!
すごく助かりました。

161 :login:Penguin:2006/10/10(火) 01:11:18 ID:34A8UKNC
そういえばgrepで除外を意味する-vの由来は何だろう。
校正記号の「トル」?

162 :login:Penguin:2006/10/10(火) 01:20:55 ID:lcIpK0vW
--invert-matchのvじゃね。

163 :login:Penguin:2006/10/10(火) 04:16:52 ID:j7TWTFqG
2000バイト以上のファイルを削除したい場合、どうしたら良いでしょうか?

findと組み合わせればよいのは分かるのですが、-sizeの使い方が良くわかり
ません。宜しくお願い致します。

164 :login:Penguin:2006/10/10(火) 04:21:26 ID:j7TWTFqG
すいません。
自己解決しました。

find . -size -2000c

165 :login:Penguin:2006/10/10(火) 04:43:41 ID:j7TWTFqG
ちょっと不親切でしたので、再投稿します。

find . -size +2000c -exec rm {} \;

で解決出来ました。お騒がせしました。

166 : ◆Zsh/ladOX. :2006/10/10(火) 23:29:53 ID:2MRSIVzd
vetoジャマイカ

167 :login:Penguin:2006/10/11(水) 02:58:14 ID:JyuHWbkO
>>166
む、納得しちゃいそう。

168 :login:Penguin:2006/10/13(金) 11:56:24 ID:Mn/ZCEtt
>>155
cでしょうに。
ただcから入るとc++で頭切替えるのが大変になる。
c++てcを書いてる人が多い。

169 :login:Penguin:2006/10/13(金) 12:14:19 ID:yGdobEUM
>>168
あえてネイティブで動かす必要のあるものを作る場合を除けば、いまどきCやる必要なんてないでしょ。
Rubyとかのスクリプト言語でサッと書いてサッと使ってサッと捨てる。

170 :login:Penguin:2006/10/13(金) 12:59:32 ID:Mn/ZCEtt
>>169
初心者向けの言語って意味だから。
プログラミング入門はcが王道でしょ。
いきなりrubyは高級すぎて何がすごいのかも理解できないと思うし。
まず単純で質素なcで学んでからの方がいい。
ちなみにおじさんはアッセンブラからやらされた。
その時はくだらないと思ったがcの過程でポインタや配列を即理解できてやっててよかったと思ったよ。

171 :login:Penguin:2006/10/13(金) 13:05:42 ID:i+BkCOk3
スレ違いの話はその辺で切り上げてくれないかな。

172 :login:Penguin:2006/10/13(金) 13:07:20 ID:Mn/ZCEtt
ついでに言えばアッセンブラとcは極論すれば書き方が違うだけで同じだった。
だがcとc++は根底が違う、見た目が一緒だから厄介。
>c++てcを書いてる人が多い。
の一人だったよ。
rubyの根底を理解するには基準としてcをやっておいて損はないと思う。
命令や文法だけ暗記しても無意味だから。
ちなみにperlはおおげさなものは何もない。
cの次にperlを初心者向け言語の候補に上げよう。
だらしないコードを書くようになる危険があるが。

173 :login:Penguin:2006/10/13(金) 23:31:27 ID:w5YU+1sG
>だがcとc++は根底が違う、見た目が一緒だから厄介。

マルチパラダイム言語という名の元、構造化プログラミングと言う枯れた手法を用いることもまた合法。


174 :login:Penguin:2006/10/14(土) 02:26:44 ID:4wDWWWIQ
【sed】シェルスクリプト総合@LINUX Part2【awk】

175 :login:Penguin:2006/10/14(土) 11:42:14 ID:awFbXLqQ
tccでスクリプト書けば最強ということでFA?
いや実際ツールコマンド化されてないシステムコール叩けて便利だけど。


176 :login:Penguin:2006/10/14(土) 13:43:44 ID:aJtsd/OF
「○○しますか?[Yes]/[No]」
と言うダイアログを表示させて、その後の処理を選択したとおりに分岐させたいのですが
コマンド一覧などでは見つかりませんでした。

参考になるサイトなどがあれば教えて下さいm(_ _)m

177 :login:Penguin:2006/10/14(土) 15:20:50 ID:ZNsxMjW/
>>176
gnomeならzenityってのがある。

178 :login:Penguin:2006/10/14(土) 15:30:22 ID:vHgMANEE
>>177
ありがとうございます。早速逝って来ます

179 :login:Penguin:2006/10/14(土) 15:44:47 ID:pcLZXe+4
>>176
dialog とか。

180 :塩水 ◆1FrMT.vzQQ :2006/10/14(土) 20:07:07 ID:alqqP7TT
おもに計算はfortranでやって、ファイルの処理をシェルスクリプトとかでやってる。
計算終わってはかれたログを整理したりgnuplotで描画できるようにデータを変換したりする。
だいたいシェルスクリトプトとsedとawkで処理できるかなと思ってたけど、ちょっとした
計算に不都合があった。シェルスクリプトだと少数が含まれる計算や割算のやりかたが
よくわからない。awkは引数としてファイルを指定して、そのファイルの中身をいじくるのは
スムーズなんだけど、第一引数と第二引数に直接値を指定して、その引数同士で
計算させるというのが案外難しい。引数の定義をawk側でごにょごにょしないといけないみたい。
その点perlはARGVで直接ひっぱってきてささっと計算できた事をもってして、
ああ、perlも便利なものだったんだなって思えた。
これからperlも勉強してみようと思うんだけど、Rubyのああ、やってて便利だなと
実感できる強みみたいなモノってあるのかな。オブジェクト指向になってて、開発してて
楽しいスクリプトだという概観みたいなモノは把握したんだけど、まだいまいち実感がわかない。
まずオブジェクト指向なるものがそれほど理解できてないからかもしれないけど。
だんだんスレタイからずれてきた…

るびらーの人がいたらおもしろそうな魅力をちょこっと教えてほしいな。

181 :login:Penguin:2006/10/14(土) 20:18:30 ID:iEFH5wj3
>>180
て言うかなげぇよ。

182 :塩水 ◆1FrMT.vzQQ :2006/10/14(土) 20:38:03 ID:alqqP7TT
ごめん。
スクリプトは遅いって言われてるけど、そこまで動作速度に不満を感じることなんて
ほとんどと言っていいほど無いんですよね。コンパイルという作業をかましてまで
速度を向上したいというようなプログラムは私的な状況の改善くらいでは特に感じない。
商品開発したり、いろんなマシンでも動くようなプログラム作ったりするのに
コンパイルするようなプログラムが必要なのかな?でもperlなら大概のマシンで動くし。
科学技術計算はさすがにスクリプトじゃ無理だけど、身近な問題の改善なら
スクリプト言語でじゅうぶんだと思った。と、懲りずに長文感想文。

183 :login:Penguin:2006/10/14(土) 20:40:02 ID:iEFH5wj3
>>182
2行だけ読んだ。それに関しては激しく同意。

184 :login:Penguin:2006/10/14(土) 21:58:28 ID:vHgMANEE
>>179
ありがとうございます。
早速これも調べてみます

185 :login:Penguin:2006/10/15(日) 17:26:52 ID:hHCRRLT3
>>176

gtkというアプローチも。XでGUIプログラミングに便利かも。

手早い選択肢としては、179のdialogに同意。

186 :login:Penguin:2006/10/15(日) 20:04:48 ID:Dk9VntiV
dtkshとか。


187 :login:Penguin:2006/10/19(木) 20:47:24 ID:FQ6Ui9I8
すいませんが教えてください

/old の全ファイルを /new にコピーを行いたいのですが、
もし /new に同名のファイルがあれば、そのファイルはコピーしない
というのをやりたいです

教えてスレではないと思うのですがよろしくお願いいたします

188 :187:2006/10/19(木) 20:48:09 ID:FQ6Ui9I8
あ、すいません bash です

189 :login:Penguin:2006/10/19(木) 21:02:16 ID:rKeC8zcr
>>188
cp をうまく使えばできないかい。
$ man cp
cp -u とか

190 :login:Penguin:2006/10/19(木) 21:03:31 ID:up7gNFzc
>>187
自分ではどこまでできたの?

191 :login:Penguin:2006/10/19(木) 21:04:10 ID:O9X2awX6
>>188
ちゃんとmanよめよ。

>>189
この場合だと-iでいいんじゃないかな。

192 :login:Penguin:2006/10/19(木) 21:06:45 ID:rKeC8zcr
>>191
.bashrc に alias で指定してあると思うが、じゃあ
cp でいいな。

193 :login:Penguin:2006/10/19(木) 21:43:51 ID:tD+4Ba/E
rsync が一番適切なんじゃないの?

194 :login:Penguin:2006/10/19(木) 21:46:20 ID:bIjdLPn3
>>193
たぶんそれが一番だと思う。

195 :login:Penguin:2006/10/19(木) 23:16:23 ID:LdXdiqxq
yes no | cp -ia ...


196 :login:Penguin:2006/10/20(金) 00:27:54 ID:txS6575E
tar -C old -cf - . | tar -C new --keep-old-files -xvf -

197 :login:Penguin:2006/10/20(金) 14:30:44 ID:lljI9Z8i
すみません。findコマンドで
find ~ -name '*.sh' -exec rm -f {} \;

みたいなコマンドを良く見掛けるんですけど、後ろの「{} \;」って
どういう意味があるのでしょうか?

198 :login:Penguin:2006/10/20(金) 15:03:24 ID:jcp0YpyW
>>197
まず、findの-execスイッチは、「-exec command ;」という形式をとるの。
というところまではわかってる?まずこの点findのman読んで復習して。

{}の意味については、やっぱりfindのmanの-exec...の項を読むとみつかるはず
だから探してみて。

\;は、元々は-exec...;の最後の;。
なんだけど、シェルが;をコマンドの区切りとみなしちゃう(findの-execスイッチの
一部分だとはシェルには解釈しない&できない)から、それを防止するために
エスケープして\;と書くの。

199 :login:Penguin:2006/10/20(金) 15:37:04 ID:lljI9Z8i
>>198
あ、エスケープの「\」だったんですね。
manを読んでみます。

検索しても使いかただけとか、{}で検索しても良いページがでなかったもので。

200 :login:Penguin:2006/10/20(金) 15:53:46 ID:lljI9Z8i
'*.sh'でヒットしたファイルをカウンターにして
forのようにまわして、{}にその引数の中身を展開して実行してるみたいですね。

for i in (ファイルのあるPATH)/*.sh ; do
rm -f $i
done

みたい。

201 :login:Penguin:2006/10/20(金) 20:51:18 ID:sPhZqjis
http://vine.ic.sci.yamaguchi-u.ac.jp/
の自動更新スクリプトも核はsedで書かれているらしい。

202 :login:Penguin:2006/10/25(水) 17:04:32 ID:N8gV8hQo
あるディレクトリを作成、その下にディレクトリツリー(movieとかaudio、更にそのmovieやらaudioディレクトリの
下に01、02〜の様な)を 作成してツリーの大元に戻って大本のフォルダをリネームをしたいのですが
最後の対話式でリネームする部分が難しくてうまい事作動してくれません。どなたか救いの手を…


203 :login:Penguin:2006/10/25(水) 17:15:20 ID:tU4cUr/G
>>202
今どこまで書けたの?

204 :login:Penguin:2006/11/04(土) 14:41:24 ID:8GhdlUfe
質問です

通常シェルスクリプトを書くとき,シグナルを受け取った時の
処理をシグナル毎に書くと思うのですが,逆に
どのシグナルが送られてきたか調べる方法はありますでしょうか?


205 :login:Penguin:2006/11/04(土) 21:47:32 ID:WxZzepoe
ないんじゃない。

myhandler () {
  local sig="$1"
  ...
}
trap "myhandler 1" 1
trap "myhandler 15" 15

とかじゃだめ?

206 :login:Penguin:2006/11/05(日) 11:33:47 ID:wGRiE4/g
>>205
やっぱりひとつひとつ調べないと無理ですか...(´・ω・`)ショボーン

あざーす

207 :login:Penguin:2006/11/05(日) 13:28:09 ID:RXI70RMP
誰か暇な人解いて

引数付(1〜5)で実行したshellが何を引数として入力
  したかを,switch文を使って表示させたい。

【その1】引数無し、もしくは引数が1〜5以外の場合
% ./test.sh
Invalid number.
%

【その2】引数が1〜5の場合
(5を入力した場合)
% ./test.sh 5
You have imput 5.


208 :login:Penguin:2006/11/05(日) 13:37:45 ID:i3mgyo4j
switch文なんてないから不可能だな。

209 :login:Penguin:2006/11/05(日) 13:41:46 ID:2kXaFaWm
揚足取り乙


210 :login:Penguin:2006/11/05(日) 13:45:34 ID:6dyarNgd
宿題は自分で。

211 :login:Penguin:2006/11/05(日) 14:56:58 ID:swozWI3K
マルチかよ…

212 :login:Penguin:2006/11/06(月) 00:02:57 ID:q5pzIs6H
お勉強中の素人です。

rsh 許されていないサーバとのやりとりを絡めた処理を
やらせる為 , 一部 expect を使おうと思っています。

で , expect の send は実行したいコマンドを " で括りますが
" 自体をコマンドで使いたい場合はどうすればいいのか
ワカランです。

教えてくだされ。


213 :login:Penguin:2006/11/07(火) 18:02:42 ID:uIiz0qVx
お舞らちょっと漏れの愚痴を聞いて下さいませんか。

今GNU findを使ってディレクトリツリーのファイル一覧を出力したんだが、
日本語(EUC-JP)の名前が付いたファイルが上手く表示されねぇ。

以前は同じ
$ find . -ls
なんかで、ちゃんと表示されてたのに。

仕方ねーから、man findをじっくり読んでみた訳よ。

 UNUSUAL FILENAMES
          :
   -ls, -fls
      Unusual characters are always escaped. White space, backslash,
      and double quote characters are printed using C-style escaping
      (for example '\f', '\"'). Other unusual characters are printed
      using an octal escape. Other printable characters (for -ls and
      -fls these are the characters between octal 041 and 0176) are
      printed as-is.

非ASCII圏は無視ですか。そーですか。
version 4.2からこんな仕様になっていたとわ… orz


214 :login:Penguin:2006/11/07(火) 18:07:07 ID:pP57+mqL
>>213
find . | nkf -e
でもしとけ。

215 :login:Penguin:2006/11/07(火) 18:16:17 ID:3/rl4qfJ
less なら文字化けしないんだけどね。

216 :login:Penguin:2006/11/07(火) 18:24:34 ID:uIiz0qVx
>>214
いや、だからfindが出力するファイル名自体が、既にASCIIで
\213\245\216\270...
になってるんですって。UNUSUALにされてしまうのです。

愚痴るだけではあれなので…
>>212
expectって結局はtclだから、\でエスケープ出来ない?
"command" なら "\"command\"" みたいに。


217 :213:2006/11/07(火) 18:32:30 ID:uIiz0qVx
上レス番号付け忘れますた。

>>214>>215
確かに-print系では、出力が端末以外なら、そのまま表示できますが、
-lsで一気に詳細情報まで得ようとすると、どうやっても勝手に変換と。

一々-exec ls -l {} \;とか-printfで指定してやらにゃならんのか… o...rz


218 :login:Penguin:2006/11/07(火) 18:36:55 ID:3/rl4qfJ
>>216
find に文句がいいたのですね。
「find でリストを作るのに nkf 噛ませないと行けないなんて find は使えねーな。」
ってことでしょうか。

219 :login:Penguin:2006/11/07(火) 20:06:37 ID:TyjbxAWs
>>218
nkf噛ませてもダメだから困ってるんじゃないの?

220 :login:Penguin:2006/11/07(火) 21:01:30 ID:3/rl4qfJ
>>219
nkf 噛ませれば問題ないよ。

221 :login:Penguin:2006/11/07(火) 22:05:32 ID:pP57+mqL
>>217
ああ -ls option の問題なのか。
いつも省略してた(-print が使われる)から分からなかった。
確かにASCIIになっちまうな。

これpatchないのかな?

222 :login:Penguin:2006/11/09(木) 22:18:47 ID:hxGsWwCw
patchつーかバグレポ対象だろ、これ。
少なくともlocale見て動けYO!位はいっていいんじゃない


223 :login:Penguin:2006/11/09(木) 23:07:28 ID:Fy+EWKU1
>>222
>patchつーかバグレポ対象だろ、これ。

バグレポートだけよりパッチつきで報告してくれるほうがはるかに有意義だ。

224 :login:Penguin:2006/11/18(土) 17:28:51 ID:IVoEU4qc
シェル変数$tstvar1がwhileループ内で局所されて?しまいます。
ループの外で参照するにはどうしたらいいですか?
ちなみにforループで違う感じにまわしてみたのですが$tstvar2は
局所されなかったとです。んん?
$ cat tst.sh
#!/usr/bin/env bash

seq 1 $1 | while read line ;do
tstvar1=$line
done

for i in $(seq 1 $1);do
tstvar2=$i
done

echo while loop last num is $tstvar1
echo for loop last num is $tstvar2
#=====================================

$ ./tst.sh 5
while loop last num is
for loop last num is 5


225 :224:2006/11/18(土) 17:32:22 ID:IVoEU4qc
m(_ _ )m
× 局所
○ 局所化

226 :login:Penguin:2006/11/18(土) 18:02:59 ID:6vMNnicg
zsh使え

227 :224:2006/11/18(土) 18:20:24 ID:IVoEU4qc
bashでおねがいしますm(_ _)m

228 :login:Penguin:2006/11/18(土) 22:20:15 ID:BOjrTH30
$ cat test.sh
#!/usr/bin/env bash

seq 1 $1 > /tmp/hogehoge.tmp
exec 3<&0 </tmp/hogehoge.tmp
while read line; do
tstvar1=$line
done
exec 0<&3 3<&-

echo while loop last num is $tstvar1
$ ./test.sh 5
while loop last num is 5

リダイレクト or パイプだとサブシェルが起きちゃうからファイルに落とさないとむりぽ.

229 :224:2006/11/18(土) 22:28:24 ID:IVoEU4qc
そかー、サブシェルになっちゃってたんですねえ。
すっきり&たすかりましたm(_ _)m


230 :login:Penguin:2006/11/18(土) 23:17:36 ID:dOjBUY29
ど初心者の質問で申し訳無いんだけど、単語を2列ずつにする
のってどうすればいいんですか?↓こんなファイルを

apple
but
chance
data
e-mail
funny

↓このようなファイルに変えたいんだけど、、、

apple but
chance data
e-mail funny

231 :login:Penguin:2006/11/18(土) 23:27:29 ID:qmA4jFhb
>>230
sed -ne 'N;s/\n/ /;p'

160 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)