トップページunix
1001コメント312KB

シェルスクリプト総合 その6

■ このスレッドは過去ログ倉庫に格納されています
0001うはwwwww2006/03/26(日) 00:56:22
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0244名無しさん@お腹いっぱい。2006/04/06(木) 11:12:06
単に「スクリプト」と表現されると、多分「何スクリプト?」って聞くと思う
0245名無しさん@お腹いっぱい。2006/04/06(木) 11:27:20
>>243
先輩のことかーっ!!
0246名無しさん@お腹いっぱい。2006/04/06(木) 11:47:25
UNIXを打たれるくらいなら
シェルを作られる方がガマンできる
0247ななし2006/04/06(木) 16:54:17
$1 が -a の時に、
[ $1 = -a ] とやるとうまくいきません。
何かいい方法はありませんか?
0248名無しさん@お腹いっぱい。2006/04/06(木) 17:11:26
うまくいくよ
0249名無しさん@お腹いっぱい。2006/04/06(木) 17:20:01
>>247
現行のシェルだとそのままでうまくいく。
うまく行かないのはかなり古いBourne Shell。
ちなみにどのOSのshか教えて。

うまく行かないシェルの場合は、

[ X"$1" = X-a ]

とやって回避する。が、この回避方法はバッドノウハウなので、
もうobsoleteなはずなんだが、、
0250名無しさん@お腹いっぱい。2006/04/06(木) 17:24:13
>>249
なんで廃れたとか原始的とか古典的とか
爺さんの知恵袋とか
文脈に的確な日本語を当てないで
【obsolete】なんて形容詞や動詞として使うの?
0251名無しさん@お腹いっぱい。2006/04/06(木) 17:33:48
>>247
イマドキのシェルだと、>>249 の回避方法を使わなくても
そのままで桶なはずだが、それ以前の問題として、
$1を " " で囲んだ方がいい。
[ "$1" = -a ] ね。
でないと、$1が -aだった場合じゃなくて、
$1がスペースだった場合とかにエラーになる。
0252名無しさん@お腹いっぱい。2006/04/06(木) 23:40:45
>>237
.sh
0253名無しさん@お腹いっぱい。2006/04/07(金) 00:01:00
>>250
重箱の隅をつついいてひとり悦に入る非生産的な奴だね君
0254名無しさん@お腹いっぱい。2006/04/08(土) 00:33:08
>>206
>cp -p hoge.txt aaa/fuga.txt bbb/ccc/boke.txt /dokoka/sonohen
>を実行すると、hoge.txt fuga.txt boke.txtが、
>bbb/ccc/boke.txtは /dokoka/sonohen/bbb/ccc/boke.txtに、
>コピーしたいのです。

find hoge.txt aaa/fuga.txt bbb/ccc/boke.txt -print -depth | cpio -pdmuv /dokoka/sonohen
でできる。
コピー元がリンクなら、コピー後もリンクのまんまだよ。
0255名無しさん@お腹いっぱい。2006/04/08(土) 07:52:08
>>254
欲嫁。>>206 に「tar等を使うのは無しで」とある。
tar等には cpioも含まれると思われる。
それに、コピー後もsymlinkのままでは困るという質問だよ。
(ファイル本体をコピーして欲しいというのが質問の意図)

で、>>214 の cp --parents ですでに解決済み。
0256名無しさん@お腹いっぱい。2006/04/09(日) 18:49:03
あるファイル-Aをcatで別ファイルに出力するプログラムを作っています。
権限関係の理由で sudo と expect を使って
パスワード認証を行ってから cat する方法を取りたいと考えています。
cat だけなら問題ないのですが、

# cat A > hoge1.txt
# ./cat.exp ID PASS A > hoge2.txt

上記のようにした場合、
hoge2.txt の方が10〜300バイトほど量が増えてしまいます。
おそらくcat.expの中で無駄な出力が出てしまっているためかと
思うのですが、改善方法を教えていただけないでしょうか?
expectのマニュアルを見ましたが解決しません
ttp://kansai.anesth.or.jp/gijutu/expect/howto-expect.html

--cat.exp--------------------------------------
#!/usr/bin/expect
set username [lindex $argv 0]
set password [lindex $argv 1]
set file [lindex $argv 2]
log_user 0
spawn sudo -u $username /bin/cat $file
expect "assword:"
send "$password\r"
expect eof
log_user 1
exit
0257名無しさん@お腹いっぱい。2006/04/09(日) 19:20:40
>>256
expectだと改行コードがCR+LFで記録されてしまうからじゃないの?
02582562006/04/09(日) 22:49:06
>>257
レスありがとうございます、
関連情報を調べてみようと、改行コード expect あたりでぐぐったのですが
特に見つかりませんでした。
直す方法はあるでしょうか?
0259名無しさん@お腹いっぱい。2006/04/09(日) 22:53:09
ファイル出力後に変換する
02602562006/04/09(日) 23:30:18
か、かなり大容量のファイルなんで、
できるだけ出力後に処理ってのは勘弁を・・・orz
0261名無しさん@お腹いっぱい。2006/04/10(月) 00:12:46
どうせたいした容量じゃねーだろ。何メガバイトぐらいか言ってみ?
0262名無しさん@お腹いっぱい。2006/04/10(月) 03:15:58
>>256

sudo がパスワード認証するんだから、

#!/bin/sh
sudo -u ahouser cat "$@"

でいいじゃん。

パスワードをコマンドラインから入れたら、ps で「もろばれ」なのはわかってんの? それでも、やりたいんだったら、sudo -S っていう手があるけどさ。正気ならそんなことしない。

どうしても、その狂気を避けられないのは「権限関係の設計が悪い」からです。僕
だったら、wrapper作るか、.ssh 作ってssh 経由でcatさせるね。
0263名無しさん@お腹いっぱい。2006/04/10(月) 10:22:34
複数のシンボリックリンクを、指定のディレクトリに移動したいのですが、
移動先のディレクトリでも、シンボリックリンクが正しく元のファイルを
指すようにするには、どういうシェルを書けばいいでしょうか?

シンボリックリンクが絶対パスなら無問題ですが、
シンボリックリンクは、../.. とかを含む相対パスであり、
かつ、移動先でも相対パスでリンクする必要があります。

例えば、
/aaa/bbbディレクトリの下に
hoge -> ../hage
というシンボリックリンクがあったとすると、
これを/aaa/ccc/dddディレクトリの下に移動させた場合、
今度は、
hoge -> ../../hage
を指すようにリンクを修正して移動したいのです。
0264名無しさん@お腹いっぱい。2006/04/10(月) 13:03:09
移動先のディレクトリをシンボリックリンクにすりゃいい。
0265名無しさん@お腹いっぱい。2006/04/10(月) 13:20:31
>>264
それでは解決にならんよw
0266名無しさん@お腹いっぱい。2006/04/10(月) 20:14:20
いいせんいってると思ったのになw
0267名無しさん@お腹いっぱい。2006/04/11(火) 03:19:21
imake が、そんなことやってて「迷惑だな」と思った。絶対パスでリンクを生成する方が健全。cd .. がわやになるし。
0268名無しさん@お腹いっぱい。2006/04/11(火) 12:04:20
>>249
Macでこれが失敗した。
/bin/test -z = -a -o -f /etc/passwd
POSIXでも引数がたくさんある場合の評価の順序はunspecified。
0269名無しさん@お腹いっぱい。2006/04/12(水) 01:38:08
ファイルの中身を行単位で処理するために、
下記の方法でスクリプトを書いてみたのですが、
改行のみの行が処理対象とすることができません。

#==ファイルの中身===
$ cat hoge.dat
111
222

333
444

#==スクリプトの中身===
#!/usr/local/bin/bash

IFS='
'
for line in `cat hoge.dat`
do

echo $line

done

#==実行結果 ここまで===
111
222
333
444

なぜ、222と333の間の改行のみの行がわたってこないのでしょうか?
0270名無しさん@お腹いっぱい。2006/04/12(水) 01:40:25
板違いでしたらごめんなさい。

2ちゃんめるって、インデントが向こうになるんですか?

[半角空白][半角空白][半角空白][半角空白]echo $line
ってかいたのに
echo $line

になってる。

0271>>2692006/04/12(水) 01:54:27
自己解決しました。
ループの部分を以下のように変更したら、うまくいきました。


while read LINE
do
echo $LINE
done < hoge.dat

0272名無しさん@お腹いっぱい。2006/04/12(水) 01:59:36
空行が何行あろうと、結果が一緒じゃないかな。通常の、いわゆる空文字を無視する
ようなIFSでも、並んだ空白文字であればいくつでも無視するでしょ? それと一緒。
0273名無しさん@お腹いっぱい。2006/04/12(水) 03:34:32
>>271
定番だが、$LINE は "$LINE" にしておいた方が幸せだ。
0274名無しさん@お腹いっぱい。2006/04/12(水) 10:32:51
zshなら $LINE のままでいいから幸せだ。
0275名無しさん@お腹いっぱい。2006/04/12(水) 11:48:34
$LINEのなかみが"-n"とかだとまずくない?>bash
実行オプションがあるのに、オプション"--"を許容できないのが設計ミスのような。
0276名無しさん@お腹いっぱい。2006/04/12(水) 11:54:41
>>275
それはbashだけの問題ではない。zshやashとかでも同じ問題がある。
Solarisのshだと-nの問題はないが、代わりに、
$LINEの中身が \c とかだとやはり問題になる。
元はechoコマンドの設計ミスだが、今さらもう変えられないのが現実。
で、echoの代わりにprintfを使えというのが今の結論だが、
シェルによってはprintfが組み込みじゃないので、
使うのはためらわれる。
0277名無しさん@お腹いっぱい。2006/04/12(水) 16:25:07
すいません、なんだか成り行きでメールアカウントを大量に登録するスクリプトを作らなくてはいけなくなったんですが、
今までUNIXとかぜんぜんやったことなくて何がなんだかで途方にくれてます。
そもそも質問自体どうやっていいかわけがわかってないんですが、どなたかヒントだけでもいただけませんでしょうか。
登録するリストは別にあって、だいたい800ぐらいなんです。

メールアカウントを個々に登録することは
# useradd.sh NEWUSERACCOUNT@***.***.***.jp PASSWORD
Creating user.NEWUSERACCOUNT on default
add NEWUSERACCOUNT
ってな感じで登録してるんですが・・・・。
これだけで何が言いたいかわかるでしょうか。
そもそもこのスレでいいかどうかもわかりませんが、本当に申し訳ないですがわかる方いましたらよろしくお願いいたします。
0278名無しさん@お腹いっぱい。2006/04/12(水) 16:41:25
>>277
えっと、useradd.sh というスクリプトは、お前の会社とかで作成された
スクリプトだな。(一般のuseraddコマンドとは無関係)
で、
useradd.sh メールアドレス パスワード
という書式で実行すればいいんだな。

だとすると、その800アカウント分くらいあるという、
別ファイルのリストの書式を晒せ。

そのリストを読んで、useradd.shを呼び出しながらループする
シェルスクリプトを書けば桶。
0279名無しさん@お腹いっぱい。2006/04/12(水) 16:43:40
#!/bin/sh
while read x
do useradd.sh $x
done < 登録するリスト
0280名無しさん@お腹いっぱい。2006/04/12(水) 16:45:34
>>277
そのリストは、

user1@example.com パスワード1
user2@example.com パスワード2
:
という書式だとエスパーしてみる。

すると、

while read addr pass
do
useradd.sh "$addr" "$pass"
done < リストのファイル名

でOKだよ。

もし、リスト中に余分な文字列があるなら、それを取り除く処理が必要。
0281名無しさん@お腹いっぱい。2006/04/12(水) 16:53:01
>>280
もしそういう書式なら
エディタで行頭に "useradd.sh " を追加して
そのままシェルスクリプトとして実行しちゃうのが楽。
0282名無しさん@お腹いっぱい。2006/04/12(水) 17:06:41
そのリストがそういう書式でコメントも何も含まれてないなら、

xargs -n2 useradd.sh < 登録するリスト
0283名無しさん@お腹いっぱい。2006/04/12(水) 17:10:08
>>281
リストをエディットして直接実行する場合、
パスワード部分の文字列が、
z3xd89;rm -rf /;Eakez
とかになっていると面白いことになりそう。
02842772006/04/12(水) 18:15:08
みなさんありがとうございます・・・・。
リスト自体は

user1 password1
user2 password2
・   ・
・   ・
・   ・

といった感じですが、@以下も追加しちゃえばよさそうですかね。
とりあえずがんばってやってみます。
こんな初心者に教えていただきありがとうございます。
また何か困ったらお願いしたいと思いますが、できるだけ自分でできるようがんばります。
0285名無しさん@お腹いっぱい。2006/04/12(水) 18:20:21
>>284
だったら、>>280 の回答が近い。

while read addr pass
do
useradd.sh "$addr"@example.com "$pass"
done < リストのファイル名

とすればいい。リストのエディットは不要。
0286名無しさん@お腹いっぱい。2006/04/12(水) 18:21:59
>>283
おれが透視したところによると
そういう行は存在しないので無問題。
0287名無しさん@お腹いっぱい。2006/04/12(水) 20:11:07
さあ突然ですがここで問題です

python -c 'print __import__("sys").stdin.read()' |
ruby -e 'while gets(); print $_ end' |
sh -c 'while read x;do echo $x;done' |
awk '{print}' |
perl -pe '' |
sed '' |
cat

全部読み込むまでパイプしない奴は誰でしょう。(10点)
0288名無しさん@お腹いっぱい。2006/04/12(水) 20:17:04
>>287
答え、python。

つーか、答がpythonになるなら、それはpythonのバッファリングの問題であって、
シェルスクリプトスレとしてはスレ違い。
0289名無しさん@お腹いっぱい。2006/04/12(水) 20:23:36
>>287
毎度お約束だが、echo $x は echo "$x" にしておいた方が幸せだ。
0290名無しさん@お腹いっぱい。2006/04/12(水) 20:26:58
>288
早い正解!よくわかったね、スレ違い恐縮です
0291名無しさん@お腹いっぱい。2006/04/12(水) 20:33:32
いろんな言語で Hello World というのがあったが、
いろんなコマンドで catモドキを作るというのも面白そうかも。

とりあえず、

tr a a とか、
nkf -Jj とか。
0292名無しさん@お腹いっぱい。2006/04/12(水) 20:41:20
俺も考えてみた。

grep ''
dd 2> /dev/null

(ddはメッセージを捨てる必要あり)
0293名無しさん@お腹いっぱい。2006/04/12(水) 21:00:41
gzip -c | gzip -dc
uuencode hoge | uudecode -p

こういう組み合わせはいくらでもあるので以後禁じ手で。
0294名無しさん@お腹いっぱい。2006/04/12(水) 21:03:33
>>291
ダウト! nkf -Jj は変換されてしまう。

俺からもひとつ、
tail +1
0295名無しさん@お腹いっぱい。2006/04/12(水) 21:16:01
vim -es -c "wq! /dev/stdout" /dev/stdin
0296名無しさん@お腹いっぱい。2006/04/12(水) 22:01:31
fjの時代からあった話題やな
0297名無しさん@お腹いっぱい。2006/04/12(水) 23:19:45
俺は Fjとやらを知らん世代。

bash -c 'echo "`</dev/stdin`"'
0298名無しさん@お腹いっぱい。2006/04/12(水) 23:47:34
昔の2chです<fj
0299名無しさん@お腹いっぱい。2006/04/12(水) 23:56:25
fjを知っていると、今どきの
「2chは匿名だからこんなに殺伐としているんだ」
みたいな意見は嘘だと分かるよな。

fjは実名であんなに殺伐とできたのだから。
0300名無しさん@お腹いっぱい。2006/04/13(木) 00:39:57
殺伐加減がひどくなったのは、
やっぱり一般のプロバイダが参入してきて
fjも匿名が当たり前になってからじゃない?
0301名無しさん@お腹いっぱい。2006/04/13(木) 00:42:23
fj→今の2ch
は違和感ある。

nifty→今の2ch
fj→スラド
でしょ。
0302名無しさん@お腹いっぱい。2006/04/13(木) 00:56:08
目からうろこなパイプ集ですね
helloだとインがないからプログラムらしく見えなかったのか
catもどきだとその処理系の癖が見えて詳しくなった気分
0303名無しさん@お腹いっぱい。2006/04/13(木) 01:15:58
たぶん最短
tee
03042562006/04/13(木) 10:56:14
>>262
うわ、言われてみれば・・・・・。
こうしたほうがsudoの場合でもセキュリティ十分に確保できると
思ってやってたんですが、psで簡単にばれちゃうとは本末転倒ですね。orz
0305名無しさん@お腹いっぱい。2006/04/13(木) 16:43:52
fjが「は?それが何か」とかのレべルで殺伐してたのは昔からかと。
パソコン通信の連中が入ってきてからは、ゴミ記事と馬鹿が増えたっけ
げいいんが変換できないのはおかしい、とか
0306名無しさん@お腹いっぱい。2006/04/13(木) 19:25:56
fjの殺伐さ+パソ通の馬鹿=2ch
といったところ?
0307名無しさん@お腹いっぱい。2006/04/13(木) 21:11:24
まだまだあるcatモドキ、

comm - /dev/null
0308名無しさん@お腹いっぱい。2006/04/13(木) 22:07:28
paste -
0309名無しさん@お腹いっぱい。2006/04/14(金) 00:26:17
cut -f 1-
0310名無しさん@お腹いっぱい。2006/04/14(金) 05:05:22
>>294
>ダウト! nkf -Jj は変換されてしまう。

nkf -t だよ。作者が言うんだから間違いない。

perl -ple 0

0311名無しさん@お腹いっぱい。2006/04/14(金) 07:27:38
2ch は実名の緊張感がないので
おなじ殺伐でも馴れ合いで緩和されるところがあると思う。
0312名無しさん@お腹いっぱい。2006/04/14(金) 07:57:48
>>311
馴れ合いはハンドルネームなどで個人が特定可能な場合に生じるものだと
思うが。
2ch以前の掲示板文化は大体それで、常連同士の馴れ合いの場と化していた。
2chであっても、コテが集まるスレッドは概ね馴れ合いの場になるよな。

fjがあまり馴れ合い的でなかったとすれば、個人が特定可能かどうかという
問題ではなく、あの独特のスノビズムにあったのでは?と思う。
馴れ合いより議論の緊張感と個人主義を好み、知的であることを尊ぶ。
fjの有名人達にそういうキャラの人が多く集まっていて、それがfjの
空気を生んでいたと言うべきではないかと。
0313名無しさん@お腹いっぱい。2006/04/14(金) 08:31:44
あの空気を読めない感とか
裏でははらわたが煮えくり返っていそうで冷静を装う文章とか
どうでもいいところにいちいち丁寧に突っ込むのとかは
確かにスノッブといえばそうだな。
0314名無しさん@お腹いっぱい。2006/04/14(金) 09:11:07
まあfj = voidではあるまいよ
そう言ってもいい気もするがな
0315名無しさん@お腹いっぱい。2006/04/14(金) 11:38:20
fj 話はよそでやってよ。
0316名無しさん@お腹いっぱい。2006/04/14(金) 11:44:20
スレ違いを平然と重ね打てるのがfjクオリティ
0317名無しさん@お腹いっぱい。2006/04/14(金) 12:23:16
2chのオープンさはfjに近いと思う
オレなんか未だに「レス」に抵抗あるもん
0318名無しさん@お腹いっぱい。2006/04/14(金) 12:25:03
フォロー
0319名無しさん@お腹いっぱい。2006/04/14(金) 13:55:27
でもNetNewsと違ってクロスポストができない>2ch
やるとなるとマルチになっちゃう。
0320名無しさん@お腹いっぱい。2006/04/14(金) 14:16:41
モマイらfjネタは長引くか?
0321名無しさん@お腹いっぱい。2006/04/14(金) 17:27:08
「ネタニマジフォロ」とか、
「マジフォロ希盆」とか
「横フォロスマソ」とかいう言葉を普及させてくれ。
0322名無しさん@お腹いっぱい。2006/04/15(土) 07:50:22
2ch=地上の楽園風味だと思ってたよ(w
0323名無しさん@お腹いっぱい。2006/04/16(日) 19:52:12
2chだと何でもレスって言うけど、
フォローに相当するのならレス(ポンス)で許せるが
単発の投稿をレスというのは違和感がぬぐいきれない :-(
0324名無しさん@お腹いっぱい。2006/04/16(日) 22:06:10
全部、>>1へのレス
03252772006/04/17(月) 10:02:03
皆さんありがとうございました。
先日お聞きしたメールアカウント登録の件、無事終了できました。
パスがどうのとか権限がどうのとかいう部分からわかんない状態でしたので
そもそも私みたいなもんがやることじゃなかったかもしれませんが、
勉強できてよかったです。
返答してくださった皆さん本当にありがとうございました。
0326名無しさん@お腹いっぱい。2006/04/21(金) 10:31:55
cshのスクリプトで関数って使えないの?
goto文以外で。
0327名無しさん@お腹いっぱい。2006/04/21(金) 11:22:51
>>326
使えないよ。tcshとか最近の拡張されたのは知らんけど
0328名無しさん@お腹いっぱい。2006/04/21(金) 12:00:04
tcshでも関数は使えないよ。
(t)cshは関数だけじゃなくていろんな意味で糞だから、
決して(t)cshスクリプトを書こうなんて思っちゃいけない。
0329名無しさん@お腹いっぱい。2006/04/21(金) 12:10:15
初心者はな
0330名無しさん@お腹いっぱい。2006/04/21(金) 12:17:00
>>329
と老害が申しております。
0331名無しさん@お腹いっぱい。2006/04/21(金) 13:50:37
tcsh user が移行するとすれば、zsh だろ! 色んな意味で幸せになれる。関数もある
し。UTF-8対応でないところは無視すれば良い。

0332名無しさん@お腹いっぱい。2006/04/21(金) 15:48:48
>>331
対応しているが。
0333名無しさん@お腹いっぱい。2006/04/22(土) 01:18:13
シェルスクリプトはデファクトスタンダードのshに任せればおk。
ただ、shのスクリプトをまともに書けなくするbashは消されるべき。
0334名無しさん@お腹いっぱい。2006/04/22(土) 10:45:01
>>333
同じことがzshにも言えるわけで・・
というか、shの範囲内だけで記述するなら、
zshよりもbashの方が互換性高いよ。
zshはsignalまわりがどうやってもsh互換にできない。
0335名無しさん@お腹いっぱい。2006/04/22(土) 14:22:20
zsh 使ってる奴は、比較的その辺分かってる奴が多い。
bash 使ってる奴は、その辺、無自覚な奴が多い。
ってことでは?

bash の場合、昔からそうだったってわけじゃなくて、
Linux の標準シェルになったのが不幸の始まりって気がする。
zsh もユーザが増えてきたから、最近は bash とそう事情は変わらんかも。
0336名無しさん@お腹いっぱい。2006/04/22(土) 15:30:30
zshはモジュール化してるから、
シングルユーザーモードで使いにくい、というのないか?
bashだと、現実にシングルユーザーモードでも使われてる。
まあ、そういう場合はsh(ash)を使えばいいんだけど。
0337名無しさん@お腹いっぱい。2006/04/22(土) 17:56:30
大昔のSunOS 4.xやNEWS-OS 4.xの時代ならともかく、
今シングルユーザモードで使えないシェルってあるの?
0338名無しさん@お腹いっぱい。2006/04/22(土) 18:34:27
今のSolarisの/bin/sh /bin/ksh /bin/csh等はシングルユーザーモードでは
使えない。(実体が/usr以下にあるから)
使えるのは/sbin/shのみ。
0339名無しさん@お腹いっぱい。2006/04/22(土) 19:55:38
そうかな? /と/usrどちらもリードオンリでマウントされると思うんだが...

% svcs -d svc:/milestone/single-user | grep filesystem
online 15:53:25 svc:/system/filesystem/minimal:default
% svcs -d svc:/system/filesystem/minimal
STATE STIME FMRI
online 15:53:25 svc:/system/filesystem/usr:default
online 15:53:25 svc:/system/device/local:default
0340名無しさん@お腹いっぱい。2006/04/22(土) 22:55:04
もう/bin/shをよく見たら-> /bin/bashだったって奴は
Linux板のシェルスクリプトスレに行ってくれよ。
0341名無しさん@お腹いっぱい。2006/04/22(土) 23:01:13
>>340
誰もそんな話はしていないが。
0342名無しさん@お腹いっぱい。2006/04/23(日) 01:45:54
お力をお貸しください。
sh で、スクリプトを組もうとしています。
目的は、apache で、決まったユーザごとにBASIC認証をさせようとしていて、
新規のユーザが入るたびに、設定するのが面倒になったので、スクリプトを組み始めました。
取り合えずユーザ名とパスワードだけのテキストファイル(list_name)は、手動で作り
user1 passwd1
user2 passwd2

for文かwhile文で書けば終わると思っていたのですが
二次元配列?のところでうまくいきません。
ユーザ名もパスワードもバラバラに引数として利用したい。
for文だと、eval を使って、出来るんでしょうか?
while文で、shift 2 とかすればいいかなと思ったのですが、for文でのin に変わるものだわかりません。

なにかヒントだけでもよろしくお願いします。
0343名無しさん@お腹いっぱい。2006/04/23(日) 02:02:21
>>342
read の使い方を調べると幸せになれる。

while read user pass ; do
...
done < list_name

bash の read なら配列に代入する事もできるけど、
これで充分だよね?
■ このスレッドは過去ログ倉庫に格納されています