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


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

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



1 名前:名無しさん@お腹いっぱい。 [2007/02/15(木) 14:28:44 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>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 でトレースしましょう。

前スレ
シェルスクリプト総合 その7
pc10.2ch.net/test/read.cgi/unix/1157601611/


642 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 00:36:28 ]
#find ... -exec ... +
横レスだが知らなかった
ってか手元のmanにはない

643 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 03:34:11 ]
最後の「+」ってなに?

644 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 08:19:20 ]
xargsは同じプロセスを連続起動するから
工夫されていると聞いたことがある。
これは事実?


645 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:14:11 ]
基礎的な質問ですいません。

bashで、シェル変数に値を突っ込み -zで存在を確認する手法ですが、

if [ -z $test ] ; then
 echo "val exist"
else
 echo "val isn't exist"


質問
1.[ -z $test ] と書くのはよろしくない?
2.[ -e $test ] とすると、シェル変数が存在しない時に真、
  シェル変数が存在する時に偽となるのはなぜ?


結構、このパターンで利用してたのですが、2.の動作を確認すると、
なぜだか逆になっているような。じゃ、-zもよろしくないのかなぁ、と

ところで、みなさんは、環境変数やシェル変数の存在確認をどうやってますか?
宜しくお願いします。


646 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 15:23:43 ]
>>645
まず、[ ] の中ではシェル変数は基本的にダブルクォートを付けること。

[ -z "$test" ] とする。この場合、$testがセットされていれば偽になる。
これだと真偽が逆になってわかりにくいので、
[ -n "$test" ] または -n は省略できるので [ "$test" ] とする。

[ -e $test ] は、$testがセットされていない時、[ -e ] となってしまい、
これは、"-e" という文字列がサイズゼロかどうか(この場合は2バイト)という
判定がなされるため、$testがセットされていないと真になる。
一方、$testがセットされていると、今度は -e は -eオプションとして解釈され、
$testの中身がファイル名とみなされるため、そんなファイルがなければ偽になる。

更に言うと、-e は Bourne shでは使えないため非推奨。

647 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 15:39:39 ]
>>646
ありがとうございます。
うーーん、なるほど。1行目でよく分かりました。

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:11:12 ]
丁寧に説明してもらった理由を理解したのかしてないのかよくわからん回答だな

649 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 16:12:07 ]
このあたりものこともあって zsh で手抜きスクリプト書くことが多くなった

650 名前:名無しさん@お腹いっぱい。 [2007/06/18(月) 16:24:47 ]
>>648
舌足らずですみません。
1行目で自分の間違いを気付き、
詳しい説明をしていただいたので助かりました、と書きたかったところでした。

-eオプションの非推奨コメントは特に助かります。



651 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/18(月) 21:09:56 ]
      ______
    /          )))
   /   /// /―――-ミ
   / 彡彡 // /      ヽ))
   / 彡彡 iiiiiiiiiiiiiii  iiiiiiiiii|
   / 彡彡 < ・ > 、<・ >l
  /    |       ヽ   〉
  /  ( | |      __)  |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  /   | ≡  /, ―――  |ゝ < 馬鹿共にshellを与えるな!
  /   |   |  L ___」 l ヾ  \_________
_ミ  l   ______ノ ゞ_
  |  l ヾ    ー   / |  l
  |  |   \ー    ‐/  |  |


652 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:10:33 ]
>>646

>>更に言うと、-e は Bourne shでは使えないため非推奨。

?????



653 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 08:30:50 ]
>>652
教えて欲しいんなら「???」じゃなくて、ちゃんと日本語で書け。初心者君。

654 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:19:43 ]
ところで-eがないshが標準で載ってるOSってどれ?

655 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 09:36:14 ]
Solarisとか。SCOとか。Tru64とか。

656 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:36:15 ]
>>655
今では使われていないOSばかりですね。じゃあ、-e使ってもいいですねw

657 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 11:45:45 ]
つっ、釣られないぞ

658 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:41:51 ]
>>653
では日本語で書かせていただきます。
私が学習に使用している O'REILLY の「詳解シェルスクリプト」によりますと、
/bin/sh 組込の test コマンドに於ける -e 表現は標準的なものとして記述され
POSIX で定義している旨明記されております。また更に今回の議題の発端である
>>645 質問子の環境と共通する bash 等での独自の拡張に付いて記述した件では、
条件判定構文中の -a 演算子について(非推奨です。 -e を使いましょう)
とまで明記されているものを、使用者の環境の多用性や使用目的の別など勘案せず
一言の下に「非推奨」と断定できる根拠を教えてください。 お願いします。

659 名前:646じゃないけど mailto:sage [2007/06/19(火) 13:47:32 ]
>>658
「Bourne shでは使えないため」って書いてあるじゃん。
それが重要かどうかは各自が判断すればいいこと。

660 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 13:51:15 ]
>>658
POSIXは理想論ばかりで、現実に即してないんだよ。
いくらPOSIXでどうこう言っても、実際に動くかどうかがすべて。
test -e については、Solarisの/bin/shで動かないんだから、
OS共通のシェルスクリプトでは非推奨であるのは当然。

あと、別件で、-e の意味で -aを使ってはいけない(非推奨)なのはその通りだよ。
-a は別に ANDの演算子の意味があって、そちらの意味で使うべきだからね。

わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで
-e を使ってるのがあったら、気づき次第直しとけよ。



661 名前:658 mailto:sage [2007/06/19(火) 14:12:59 ]
予想通りの回答をどうもありがとうございました。

>>わかったら、今後は -e を使うなよ。今まで書いたシェルスクリプトで
-e を使ってるのがあったら、気づき次第直しとけよ。

ご心配有り難うございます。
そもそも機能が曖昧過ぎて過ぎて使おうと思ったことも御座いませんw

662 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 14:15:20 ]
予想してたなら聞く必要ないだろ……。
むだに波風立てんなよ。

663 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 22:13:27 ]
シェルスクリプトの互換性過敏症な奴っていじると面白いんだよ

664 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:22:07 ]
ここにもユトラーか・・・・

665 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:28:40 ]
>>663
export LANG=C とか書いてるのを見ると反応してしまうのは互換性過敏症ですか?

666 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/19(火) 23:56:18 ]
いや寧ろ互換性を指摘できる人がいて有難い


667 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 00:19:14 ]
そんなこといって年寄りほめたらわらわらわいてくるぞ。
SunOS 3.5世代の俺なんかまだまだ甘ちゃんだ。

668 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 05:31:28 ]
沸いてきてくれ
それぞUNIXの面白さの真髄だわ

669 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 09:12:11 ]
仕事では一緒になりたくねえけどなw


670 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 21:45:49 ]
ようするに、 POSIX が理想論で現実に即していないのは当然の話で、
現実がバラバラだから標準化が必要という理念が生まれたわけですわな。

で、各プラットフォームでそれぞれ POSIX に準拠する姿勢を示していながら
どうしても譲れない仕様への拘りがあるから未だに移植性の問題が取沙汰される。

そこの処の理を語らずに、只単に○○では使える or 使えないという議論に
終始するというのは如何にも思慮が浅いと言わざるを得まい。



671 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 22:08:39 ]
実社会ではそういうもんだ

672 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/20(水) 23:20:26 ]
携帯電話みたいなものだね
いまだに携帯電話つかわないもうろくジジイとかいるかなw

673 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:34:39 ]
じじいじゃないけど使ってないよ。

674 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:36:56 ]
うわw

675 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:38:49 ]
携帯電話使わない仕事というと、医者とかパイロットくらいか

676 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 01:53:54 ]
というか、どこが「携帯電話みたいなもの」なのかさっぱりわからん。

677 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 03:01:35 ]
痴呆がはじまった?

678 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/21(木) 23:19:43 ]
>>670
こだわりなんかないだろ、準拠するのが面倒なだけだよ。

準拠したからって売れ行きがたいして変わるわけでもないし。

>>675
院内では携帯は使わないけど緊急呼び出しが頻繁にあるような
医者もいるからなぁ。

パイロットは仕事中は使わないけど、そういう意味なら電車の
運転手なんかも同じだな。

て言うか、仕事中とか会社の中に限定すると携帯持たない/持て
ない奴はそれなりにいるし。

679 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 00:04:29 ]
ケータイでも3G(高周波のやつ)は大丈夫らしいけど。


680 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 09:16:46 ]
使えない奴にかぎって、くだらねえことに拘ってたりする



681 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:12:44 ]
そろそろUNIXの話にでも戻す?

682 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 20:59:20 ]
よしなに

683 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:11:19 ]
>>678
>>準拠したからって売れ行きがたいして変わるわけでもないし。

売行きが変わらないからって騒ぐこともないでしょ。
拘りがなければ準拠する方がはるかに楽なのにねぇ

あくまで /bin/sh 標準なのは基本であって、実勢はケースバイケースで、
linux じゃ bash 標準だろうし、 solaris だって適宜 ksh なり使うだろうし、
パーソナルユースや $HOME/bin 限定使用とか、管理者でも同一プラット
ホームだけでの運用が多く、移植性のプライオリティーがさほど高くない
現況において、やいのやいのいう奴は要するに「言いたいだけ」ちゃうんかと。

684 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/22(金) 23:53:48 ]
> 拘りがなければ準拠する方がはるかに楽なのにねぇ

何が楽なのか詳しく書いて欲しいんだが。

商用ソフトってちょっと変えると、検証がスゲー大変なことぐらいは知ってるよな?

685 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:08:17 ]
楽しいもの見つけてしまった。

sed.sourceforge.net/sed1line.txt
www.student.northpark.edu/pemente/awk/awk1line.txt

組込みで使っているLinuxにgrepが入ってなくて
sedでシミュレートしたスクリプト書いたんだけど、
それ以上のことがいろいろできそうな感じなり。


おまけ

www.fepus.net/ruby1line.txt


686 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 00:11:08 ]
>>683
Solarisは古いshとkshを選択できるからいいけど、
HP-UXとかAIXは/bin/shはkshそのもなんで選択の余地はない。

シェルごときで移植性とか言ってるアホが多いっていうのは同意。


687 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 03:31:47 ]
視野が狭いのって、幸せでいいよね。

688 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 08:31:29 ]
そう?いまどきシェルの互換性なんか気にしてる奴って幸せそうに見えないが。

689 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 09:38:27 ]
シェルはさまざまなコマンドと組み合わせて使うしな。
コマンドにも完全な互換性がない以上、シェルスクリプトの互換性や移植性を気にし過ぎるのはアホ。
ささっと書いてテストして動きが変だったら、そのとき直せばいい。
シェルってそういうライトな使い方をするためのものでしょ。


690 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:04:55 ]
互換性のことも知らずに、暢気に
[ -e file ] とか、export HOGE=hoge とか書いて、
「動いたからOK」とか言ってる香具師の方がアフォに見えるけどな。



691 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:28:19 ]
「さくっと直せばいいじゃん」って言ってる奴はだいたい直したことがない奴だし。

692 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 10:32:04 ]
そもそも、直す必要なんてない、動くから

693 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:05:10 ]
>>692
>>690

694 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 11:08:34 ]
何が問題か、具体的に

695 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 12:54:51 ]
問題を理解できていないことが問題なんだろ。

696 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 13:08:14 ]
互換性がいるのは移植する可能性がある場合だろうかと。
あるいは環境が一部不明な場合か。
ただ、知識としてはあれば有効だろうが

697 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:23:00 ]
開発当初は特定のシステム限定であったとしても、実社会では
いつのまにかそんな制約はなくなってしまうものなのだよ。

ニートにはわからないだろうが。

698 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 14:53:17 ]
自分の体験したことが、現実の全てだと思っている>>697がいるスレはここですか?

699 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:16:00 ]
>>698
「全ての」と「存在する」の違いを未だ習ってないのかい? ぼーや

700 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 15:20:19 ]
シェルで移植性の高いスクリプトを書くのはめんどうくさいので
Perlを使うようになりますた



701 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:25:18 ]
それはそれで別の移植性の低さが問題になりそうな…

702 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:36:58 ]
Solarisさえ無くなればシェルの互換性の問題はほとんど解決するよね。

703 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 16:55:08 ]
UNIXのソフト開発標準を策定しようという取り組みはたくさんあった。
だがそうした標準は、POSIX(Portable Operating System Interface)のように
一般的過ぎて役に立たないか、あるいはUNIX戦争として知られる
Open Software Foundation対UNIX Internationalの企業連合間抗争に
巻き込まれるかだった。

704 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:09:49 ]
mkmfのようにメタスクリプトを環境依存シェルスクリプトにコンパイルする
プログラムがあるといいと思います!

705 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 17:11:11 ]
mkmfって、、また古い遺物を持ち出してきたなぁ、、

706 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:29:52 ]
本当にそんな互換性が必要ならlintの一つや二つとっくにありそうな気がするが、
寡聞にして知らないなあ。

707 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:33:44 ]
>>706
つ dash #まあ呼び出したコマンドの互換性まではチェックできないわけだが・・・


708 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/23(土) 20:36:48 ]
役に立たない、ただそれだけ

709 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/24(日) 05:17:26 ]
すべてのシェルが/bin/shを名乗るのを止めて
/bin/shを永久欠番化すれば解決

710 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 02:26:09 ]
なんかすごい扱われようだな。
互換性を述べている人は割とバランスの取れたUNIX流の解釈だと思うぞ



711 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 03:02:50 ]
どうせUnixなんて適当じゃねえか
varとかetcとか
システム変えることになったらどうせテンヤワンヤだ

712 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 05:49:56 ]
ということにしたいんですね:)

713 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:17:51 ]
>>710
素直に自分よりの解釈だと言えば?

714 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/25(月) 23:43:08 ]
>>685のは結構凄いと思うが、
>>517のedのヤツはもっと凄いな。
オレもed好きになろう。


715 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:37:00 ]
edで日本語がうまく扱うほうほうがあれば言うことないのだが・・・・

716 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:11 ]
sedにin-placeオプションがなくてperlをよく知らなかったころは
edでやってたな

717 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:40:12 ]
>715
edより先におまえが日本語をうまく扱えるようになる必要がありそうだ

718 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 15:44:41 ]
誰がうまいこといえと

719 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 21:37:41 ]
てか、蒸し返すようで恐縮だけど
シェルスクリプトって、基本的に ash と ksh と bash で動けば
移植性で問題になることは極めて低いよね?

この三つで動いても駄目な環境って今どれほど実運用されているのだろうか?

720 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/26(火) 23:39:23 ]
>>719
Solarisが問題だな。Solarisにはkshが標準で付いてるとは言え、
シングルユーザモードでは使えない。
シングルユーザモードを含めたシステムスクリプトは依然、
/bin/shか/sbin/sh(単にstatic linkというだけで中身は/bin/shと同じ)の
範囲内で書く必要がある。
誰かが書いてたように、Solarisが無くなる(もしくは影響力が無くなる)なら、
シェルの互換性の問題は一気に解決するだろう。



721 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:25:59 ]
Solarisの/binは/usr/binへのシンボリックリンクだからkshやbash使ってもいいんじゃない?
/usr/binの中には/bin/kshで書かれたコマンドもけっこうある。
Solarisのshの動きがヘンなのはたしかにときどきちょっと困る。

722 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:42:18 ]
> Solarisの/binは/usr/binへのシンボリックリンクだから

マジで?

723 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:46:28 ]
> シングルユーザモードでは使えない。
> シングルユーザモードでは使えない。
> シングルユーザモードでは使えない。

724 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:50:42 ]
>>721
マジだよ。/sbinは別れてるけど。
>>720は/usrがマウントできない状況のことを言ってるんだと思うけど最近は/と/usrを分けないのもふつうなんじゃないかな。

725 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 00:53:11 ]
どっちかっつーとそういう問題でなくて、
ふつースクリプトは#!/bin/shで書くけど/bin/shが何だかわかんねーじゃん?
って話では?

726 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:29:26 ]
>>722
HP-UXもだな。


727 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 02:31:28 ]
ashもいろいろ修正入ってる。
Solarisの/bin/shはそれこそSystemV7のころのものとほとんど変わっていない。


728 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 03:37:47 ]
・・・ってシェルを使えじゃなくてPOSIXだか何かのsh規格に沿って書けって事だよな。

729 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 07:44:21 ]
>>721
じゃなくて、シングルユーザーモードの時、
/sbin/shはあるが、
/sbin/kshは無い。

/sbin/shはstatic linkの/bin/sh(/usr/bin/sh)
だから、シングルユーザーモードも含めれば、
結局 /bin/shの文法の範囲で書かざるを得ないという話。

しかも、Solarisの/bin/shは古いままなので、
export a=b も、$(command)も test -e も、
ちょっと新しい書き方はすべて使えない。

730 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 08:03:47 ]
互換性の話に便乗だけど、
一部のスクリプトで、未だに

${1+"$@"} って書いてあるのがある。
これ、もう "$@" でいいんじゃないか?

引数が0個の時に ""が残らないようにする措置だろうけど、
Solarisの/bin/shですらそんな不具合は発生しない。(確認済み)
なので、"$@"と書いて問題ないし、視認性上も "$@"と書くべきと思うんだが。

本当に ${1+"$@"}と書く必要がある /bin/shを搭載したOSって、
現存してる?



731 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:07:07 ]
>>729
なんか Solaris のシングルユーザモードって不便そうですね。
CD 6枚焼いたけど、インストールを躊躇してしまうよ。

732 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:19:42 ]
/ と /usr をわけたりしなければ気にする必要ないよ。


733 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:07:41 ]
>>724, >>726
なるほどねぇ、知らんかったよ。ありがと。

>>730
書き換えるのが面倒なだけなんじゃないか?

目障りだと思うなら、君が片っ端から書き換えて動作検証してあげればいいと思う。

734 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:19:19 ]
>>732
すんません BSD ユーザなもので、 / と /usr を分けるというのが
イマイチ良く解かりません。
ad0s1a に全部突っ込めって事ですか?
/var も /tmp も含めて・・・(よーするに swap 以外は同じパーテーション?)
Solaris だとそんなの有りなんだぁ。(BSDでも無いことは無いけど、なんだか・・)


735 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:36:43 ]
OSは別に関係ない。パーティションの切り方なんて好みの問題だ。


736 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:43:05 ]
>>735
でも、その好みの問題に対して Solaris はシングルユーザモードの
挙動をもってして、ユーザに介入してくる分けでしょう?
>>732 のレスからは、そういう風に読めるのだが?

737 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 00:09:08 ]
どうでもいいけどよそでやってくんないかな。

738 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:10:23 ]

>>730 の ${1+"$@"}  てどうゆう意味なの??
なんか理解できん・・・(TT

739 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 05:18:04 ]
>>734
NetBSDのデフォルトは分けないからBSDユーザーってのは言い訳にならない。

740 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 07:33:15 ]
あと、未だに
if [ X$HOGE = X ]
なんてのも見かける。これも、
if [ "$HOGE" = '' ]
と書いたほうがいい。

むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、
[ = = '' ] みたいになるとエラーになるtestに対する対処として、
X$HOGE とかいう回避法があったけど、今の testコマンドでそれが必要なのは
もう現存しないはず。



741 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:01:16 ]
>むかーしのバージョンのtestで、$HOGEの内容が = だったような場合、

ちがう。
$HOGE の内容が -f だったような場合に対する対処だから、今でも有効。


742 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/28(木) 14:16:42 ]
>>741
$HOGE の内容が -f でも正常に動くんだけど。
[ -f = hoge ] みたいに、項が3つある時は、
-fはファイル存在オプションとはみなされないから

-f だった時駄目になるような/bin/sh搭載した OSって 何?






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

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

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