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


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

シェルスクリプト相談室



1 名前:デフォルトの名無しさん [2005/04/04(月) 03:43:03 ]
シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。 


152 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 02:14:14 ]
>>151
いや、確かにそうなんだが・・
なんというか、その。
手元にある安心感とか・・
ね?

考えるより印刷したほうが早いかな (;´Д`)

153 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 03:30:18 ]
>>152
ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html

これ印刷したら結構なページ数になると思うよ。

趣味で書くならともかく、仕事なんだから仕様をきちんと
理解しないといけないわけでしょ。
なら、まずは man を読む事から始めないとね。

154 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 05:05:19 ]
bashのドキュメントだけどさ、GNU発祥なんだからmanより先に
infoなのでは。少なくとも「公式」の情報はinfoの方でしょ。
どちらも精読したわけじゃないから、違いは知らんとです。(弱っ)

155 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 08:07:06 ]
Bシェルつってんだから、man sh だろ

156 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 13:27:31 ]
>>150
「UNIXプログラミング環境」
ttp://www.amazon.co.jp/exec/obidos/ASIN/4871483517

B-shellの書き方だったらこれがお薦め。
ほかの部分は古くなってるが読んでおいたほうがいい。


157 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 13:40:11 ]
>>156
それクリックしてマーケットプレースのを注文しちゃった

158 名前:デフォルトの名無しさん [2005/10/14(金) 01:35:02 ]
EXPECTでテキストファイルを一行ずつ読む方法を教えてください

159 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 09:45:17 ]

なぜ?

160 名前:デフォルトの名無しさん [2005/10/15(土) 20:35:11 ]
下記のプログラムでX.X.X.Xの所(1.1.1.1,2.2.2.2,3.3.3.3と続く)を
ファイルから読み出して実行する方法を教えてください。
#!/usr/bin/expect
telnet X.X.X.X
expect -ex "login:"
send "UUUUU\r"
expect "Password:"
send "UUUUU\r"
expect "linux$"
send "ifconfig"
expect "linux$"
send "exit\r"
expect eof




161 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:49:18 ]
>>160
expectって俺は使ったこと無いけど
あれはたしかtclの変種でしょ
普通にtclのコマンド使えばいいんじゃないの。
openとかgetsとか

162 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 21:17:44 ]
>>160
> #!/usr/bin/expect

この時点でシェルスクリプトではないのだが。

163 名前:デフォルトの名無しさん [2005/10/15(土) 21:36:41 ]
>>162

書き直します

#!/usr/bin/sh
expect -c
telnet X.X.X.X
expect -ex "login:"
send "UUUUU\r"
expect "Password:"
send "UUUUU\r"
expect "linux$"
send "ifconfig"
expect "linux$"
send "exit\r"
expect eof

よろしいでしょうか?
アドバイスください。

164 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 21:47:47 ]
で、openだのgetsだのは使ってみたの?
tclはほとんど使わないが、たぶん

set filename ファイルの名前
set fd [ open $filename r ]
while { [ gets $fd line] != -1 } {
  lineを処理
}
close $fd

とかそんな感じだと思われるが。

ま、動的に必要なパラメタがIPだけならargv渡しでもいいだろうし
シェルでラップするんならシェル変数とクォート使って
埋め込んでもいいよな。
好きにしる。

165 名前:デフォルトの名無しさん [2005/10/15(土) 21:50:12 ]
>>164
ありがとうございます^^
今から試してみます。
本当にありがとうございました。

166 名前:デフォルトの名無しさん [2005/11/01(火) 23:36:11 ]
お世話になります。
LynxOSでシリアル経由にて装置を制御する
シェルスクリプトを考えています。
STTYコマンドで調歩同期の設定しようと思いますが
なかなかうまくいきません。
どなたかご存知の方ご教諭くださいますようお願いします。

167 名前:デフォルトの名無しさん [2005/11/11(金) 10:47:24 ]
すみません。息詰ってしまいました。
質問させてください。
B-Shellで与えられたホスト名、ユーザー名、パスでFTPログインできるか
確認だけ行いたいのですがやり方がわかりません。
ログインエラーも判断させる感じで作りたいのです。
シェル初心者で恐縮なのですが
どなたかご存知の方いらっしゃいましたらご教授お願いします。

168 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 11:52:07 ]

>>167
君がやり方を分からなかろうと知ったことでは無いし、"初心者"が免罪符になると思っているなら書き込むな

169 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 14:39:13 ]
>>166
ここじゃなくて、使っているOSの端末ドライバについて
質問するようなスレに行ってください

--
それは端末ドライバのせいなんだよ


170 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 17:14:36 ]
>>167
それは質問ではなく「作ってよこせ」というお願いですよ。



171 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 15:19:56 ]
最近bashを勉強中ですが、ちょっと質問させてください

シェルスクリプトでコマンドを実行して
失敗したら強制終了させたいのですがどうしたらいいでしょうか?

COMMAND=mkdir test
if ! $COMMAND
then
echo "失敗"
exit 1
fi
echo "成功"
これじゃ、だめですよね?

172 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 16:12:54 ]
ヒント:直前のコマンドの終了ステータスは変数 $? に格納される。

173 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 17:00:01 ]
ありがとう>>172さん
親切な方がいて助かりました
ついでにもう1つ質問させてください
シェルスクリプトでヒアドキュメントを使ってファイルに書き込むにはどうしたらいいでしょうか?


174 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 17:08:01 ]
>>173
command > file <<EOF
...
...
...
EOF


175 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 17:30:08 ]
>>174ありがとうございますー!
素敵です・・・


176 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 10:21:45 ]
いや、manページを読めば判ることで素敵って言われても。

177 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 12:24:42 ]
>>176すいません
何のmanページ見たらいいのかわかりませんでした・・・

そこでまた質問させてください
useraddを実行したとき自動でパスワードを入力させるにはどうしたらいいでしょうか?


178 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 12:53:51 ]
つ[man bash]

179 名前:デフォルトの名無しさん mailto:sage [2005/11/21(月) 19:49:25 ]
仏の顔もってやつだなw

180 名前:177 mailto:sage [2005/11/21(月) 23:41:48 ]
ちょっと質問間違えました
シェルスクリプトでpasswd hogeを実行した場合
パスワードを求められますが、これを全部シェルスクリプトで行いたい。
これって無理でしょうか?



181 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 00:58:02 ]
このスレで、passwordとかパスワードとか検索して、その前後100回読んで、
あと、UNIX板のシェルスクリプトスレでも同じことして、
それでもわからなければあきらめろ

182 名前:177 mailto:sage [2005/11/22(火) 01:48:17 ]
>>181
ありがとう
がんばってみます

183 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 02:18:59 ]
なんかUNIX板で似たような質問を見てきた気がするけど、気のせいかな?

184 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 04:40:34 ]
>>183
がんばる=他のスレでも質問する だったみたいだな。w

185 名前:デフォルトの名無しさん [2005/11/26(土) 11:08:04 ]
shellスクリプトの開発環境ってありますか?
べた打ち、ベタ読みは不便で・・・

命令文や変数に色がつく程度でも良いのですが・・・

186 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 11:33:47 ]
>>185
お使いのエディタに、キーワードを登録してください。
登録済みキーワードに色がつかないエディタをお使いなら、適宜乗り換えてください。

187 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 17:29:36 ]
試しにxyzzy bash-mode でぐぐったら引っかかった。
いいかも、これ。

188 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 20:10:23 ]
何で色が付かないと不便なんだろう
漏れは逆に色が付いてると禿しく見にくい

189 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 21:31:21 ]
色使いが悪いだけじゃないのか

190 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 22:30:11 ]
エディタ操作って「慣れ」とか「親しんだ環境」が最重要事項だから



191 名前:デフォルトの名無しさん [2005/11/26(土) 23:20:32 ]
>>186
えーとえーと、
viエディタでガリガリ書いて、コンパイルして
ってのに疲れたんです。
teratarm君はお目目に優しくないし・・・
エディタが擬似的に実行したりしてくれないかなあ・・・

>>187
情報ありがとうございます。

でもエディタそのものの使用で挫折しました。

192 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 23:23:07 ]
>>191
コンパイル?


193 名前:デフォルトの名無しさん [2005/11/27(日) 00:05:10 ]
>>192
まちげーた・・・

sh ほにゃらら で、毎回実行して

ってのが正解です。
別にshって打つのは辛くないです。パス通す方が雌鳥なだけです。

まあその程度の人間だってことです。俺は。

194 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:14:21 ]
パス通す?

195 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:44:41 ]
実行権限与えるのがめんどくさい、じゃねーのか?
パスが通ってなかったら、sh 打ったって実行できん。

chmod 777 hoge するのが面倒なら、それこそシェルスクリプト組んどけ。

196 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:50:44 ]
#!/hoge
すら書いてなさそうな香具師だな

197 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 01:28:22 ]
まあ何だか知らないが、今までvi使ってたんならvimはどうよ。あれ
色つくだろ。

198 名前:デフォルトの名無しさん [2005/11/27(日) 01:32:53 ]
なるほどー。
でも何でか、sh でカレントから新しくシェルを起動できるんだけどな?
ファイル名単体で打ったらダメだけど・・・環境変数に書いた覚えないし。

と思ったら、スクリプトの一行目が #!/bin/sh だったことを思い出した。
なるほど。そうか、パスは通してるのか。ふむふむ。
「実行権限を与えてパスを通す」。なるほどなるほど。

いやー、どれだけ自分の知識が曖昧か再認識しましたよ。

199 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 02:00:46 ]
>>197
どうやらvimにシェルは無いっぽいです。

というわけで、terapadの色の設定を
ガリガリ書き換えることにしました。
皆様お世話になりました。

また何かあったらよろしくお願いします。

200 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 02:14:08 ]


























200



201 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 10:30:51 ]
>>195
>パスが通ってなかったら、sh 打ったって実行できん。
へ?


202 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 00:05:03 ]
俺も>>195は意味不明だが、スルーした方がよい気がする

203 名前:デフォルトの名無しさん [2005/12/04(日) 19:53:23 ]
ファイル名を一括置換するシェルスクリプト

#! /bin/sh

for nm in temp*;
do
mv $nm HOGE${nm#tr};
done

temp → HOGEにするのはわかるのですが、
hhh_a_xxxxxxxxx.txt → hhhaxxxxxxxxx.txt  のように _ を削除(一括置換)するスクリプトを教えてください。
※xxxxxxxxxは可変

204 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 21:14:19 ]
>>203
方法は色々あるけど tr -d あたりがお勧め。


205 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 22:40:36 ]
>>204

tr のコマンドの意味はわかったんだけど、どうやってコマンド組み合わせればいいの?
tr は標準出力のものを対象にしてると書いてあったけど、コマンドの組み合わせ方が、わかんないです。

206 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 23:17:46 ]
>>204

#!/bin/sh
for f in hoge*
do
mv $f `echo $f | tr -d 削除文字`
done

できたよ。ありがとう。

207 名前:デフォルトの名無しさん [2005/12/09(金) 19:09:12 ]
質問なんですけど、
NTのコマンドプロンプトで
テキストファイルが二つあって
中身を片方にアペンドしたいのですが
どう記述したらいいでしょうか?
マニュアルも何もなくて一人で困ってます

208 名前:デフォルトの名無しさん mailto:sage [2005/12/09(金) 19:10:20 ]
type a.txt >> b.txt

209 名前:デフォルトの名無しさん mailto:sage [2005/12/09(金) 20:00:54 ]
ありがとうございました
ホント助かります

210 名前:デフォルトの名無しさん mailto:sage [2005/12/10(土) 02:05:23 ]
helpコマンドがある



211 名前:デフォルトの名無しさん [2005/12/12(月) 13:58:44 ]
数100人のユーザがいるLinuxで
全ユーザのパスワードを一括で設定できる
シェルスクリプトを教えろよ。

212 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 14:04:46 ]
sed 's/:[^:]:/:hoge:/'

213 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 22:19:23 ]
evalって問答無用に変数を展開しちゃうんですよね?

214 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 22:39:28 ]
どういう局面のことを言ってるのかわからんけど、
変数を展開するのはevalじゃないと思われ。
多分だけど、eval以前に変数が展開されてるんちゃうか。再確認してみ。
evalは展開された結果を評価してるだけのはず。

215 名前:デフォルトの名無しさん [2005/12/19(月) 15:43:31 ]
user> ./a.out < a000001.txt > result.txt

で結果をtxt化しているのですが、a000001.txtをa100000.txtまで処理させて
一個一個の結果を足して一つのtotal_result.txtしていきたいのです。
どのようにしたら良いのでしょうか?

具体的にはa000001.txtは以下のように出力されたとします。
1 0 3
2 4 3
3 7 7
4 8 3
5 8 1
6 2 8
7 0 4
8 2 3

a000002.txtも以下のように出力されたとします。
1 0 3
2 2 6
3 4 7
4 6 3
5 2 2
6 6 9
7 1 1
8 1 2


216 名前:デフォルトの名無しさん [2005/12/19(月) 15:44:16 ]
これが10万まで続くのですが、結果の2列目と3列目を足していきたのです。

1 0  6
2 6  9
3 11  14
4 14  6
5 10  3
6 8  17
7 1  5
8 3  5

(これは先ほどの二つの結果の合計です)


217 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 16:06:02 ]
スレ違い回答だが
awk '{x[$1]+=$2;y[$1]+=$3;} END {for(i=1;i<=3;i++)printf("%d %d %d\n",i,x[i],y[i]);}' result*.txt


218 名前:215 mailto:sage [2005/12/19(月) 18:20:06 ]
>>217さん
レスありがとうございます。
UNIX初心者な者で解答をみてもよく分からないのが現状です。

gccでコンパイルした後、どうしていけば10万のファイルの結果を合計していけるのでしょうか?
スレ違いとは思いますが、ご指導いただけたらと思います

219 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 19:12:10 ]
んなのプログラムの方変更した方が早いよ


220 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 19:14:39 ]
んなのが調べられないぐらいのレベルなら
聞いてボーッと回答待つより1万行のバッチ書け。




221 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 20:43:04 ]
変数置換えで入れ子したい!
${${NAME##*/}%.*}
こゆー事したい場合どんなのがスマート?
わかりにくいね、上のはbasename ${NAME%.*} なんだけど


222 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 02:55:27 ]
>>221
$ x=/a/b/c.d
$ y=${x#${x%?}}
$ echo $y
d

こういう事ならできるけど、前後を一変に取り除く方法は知らない。

$ x=/a/b/c.d
$ y=${x%.*}
$ y=${y##*/}
$ echo $y
c

これじゃダメなの?

223 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 09:50:00 ]
>>215
joinを知れば何かが見えてくる。

224 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:12:11 ]
質問です。
例えばdateで現時刻をvar.txtに出力するとします。
date > var.txt

txtファイルの中身は時間が書いてあると思うのですが、
もう一度↑のコマンドを実行した場合に、中身も上書きされてしまいますよね?
それで同じファイルに↑のコマンドの実行結果を書き足していくことは不可能ですよね。
可能でしたらその方法をおしえてくだしあー

225 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:19:45 ]
>>224
date >> var.txt

226 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:20:23 ]
>>225
どうも

227 名前:デフォルトの名無しさん [2006/01/09(月) 18:04:46 ]
ある年月が入力された時に、その前後の年月を出力するには
どのようにすればよいでしょうか?

例:
200512と入力されると、200511 200601が出力される

228 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:07:50 ]
>>227
つ date コマンド

229 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:21:10 ]
dateコマンドでどのようにして前の月や次の月を
表示させるのですか?

230 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:21:27 ]
>>227
cut,sed,date,exprくらいでできそう



231 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 20:53:50 ]
>229
すくなくともgnuのdateはできるよ
ttp://www.linux.or.jp/JM/html/GNU_sh-utils/man1/date.1.html


232 名前:227 mailto:sage [2006/01/09(月) 22:31:15 ]
>231
おおこんなことができるのですね。
勉強になりました。
これでなんとかできそうです、ありがとうございました。

233 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 22:38:31 ]
どんな気持ちでこんなものを通したのか・・・
date --date '2 days ago'
days agoって・・・

234 名前:227 mailto:sage [2006/01/09(月) 23:50:58 ]
行けそうと思ったのですが、現在時からの日にち計算しかできませんでした。
うーん。。
特定した日にちから指定するのは無理かもしれません。。

235 名前:デフォルトの名無しさん [2006/01/10(火) 00:05:08 ]
試してないので外れだったらスマンが
date --date '20060101 + 1 month'


236 名前:227 mailto:sage [2006/01/10(火) 00:12:55 ]
>234
いけました汗
ずっと1 monthの部分を外に出して実行してた大馬鹿者でした。
ありがとうございました。

237 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 05:42:11 ]
bash
って何て読むんですか?

ばっしゅ
ヴぁっしゅ
びーしぇる
ヴぉーんしぇる
ヴぉーんあげいんしぇる
ぷろんぷと・ヴぁっしゅ
ヴぁにっしゅ

皆さん何て読んでますか?

238 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 06:54:52 ]
bash

239 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 06:59:25 ]
シーシェルは孤高

240 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 10:36:42 ]
csh使ってる奴って変態なの?



241 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 12:13:36 ]
Solarisだと標準がcshだし。

242 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 17:05:01 ]
tcshが使えるのにcshを使ってたら変態
スクリプト書くのにもcshを使ってたら変態


243 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 20:09:55 ]
>>241
こらこら、嘘を教えなさんな。

244 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 20:22:49 ]
Solaris 1 のころならな

245 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 21:42:11 ]
>>243
Admintoolでshとcsh以外選べたっけ?

246 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 22:10:04 ]
>>245
admintool 自体が obsolete.

247 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 22:33:06 ]
そうだったのか。

248 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 03:43:32 ]
Oracle入れるとcsh押し売りされるよね


249 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 04:03:14 ]
あれは謎シェルだねw
何で直さないんだろうか。

250 名前:デフォルトの名無しさん [2006/01/22(日) 17:16:33 ]
command | tee log | grep hoge
としたときに、commandの終了ステータスを知る方法はありませんか?
command > log
ret=$?
grep hoge log
としとけばretを見ることで可能なんですが、それ以外で。



251 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 00:42:08 ]
kwsk

252 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 16:39:20 ]
(command; echo $? >/tmp/hoge) | ....
じゃだめ?






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

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

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