Diary-nagataka-シリコンバレーで働きたい!という夢への日々

外資ITで働くエンジニアが趣味や日々の事など書いてます(技術の話は別ブログ http://wanna-be-geek.seesaa.net/ )

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告
  3. このエントリーを含むはてなブックマーク

[メモ]同じbashなのに...Macでexpr useradd groupaddなどなどしたらコケたー

どうも、四月からは社会人という事で、ちょっと意識を変えて、手帳を能率手帳に変更したながたかです。

大学に入ってからこれまで五年間程手帳を使ってきて出来上がった自分の手帳選びでの必須条件は
メモ欄が充実している事
月刊表示と週間表示の両方がある事
バーチカルタイプである事
なので、以下の商品を選びました。


初めてA5サイズを買ったのですが、案外これが丁度いいサイズかなと使い始めて思っています。

今日さっそく読書メモなど1ページ近くゴソゴソ書いてました。

1年経って、仕事/プライベート共に、沢山の予定と、そしてメモの殴り書きが書かれた状態で役目を終える事を願います^^


さてさて、昨日なんですが、バイト先の製品がMacOS上で動かせるか検証するという仕事をしていました。

そのために、Linux版のインストーラスクリプトを改良していたのですが、意外な所でコケてたのでメモ。

Linux用のインストーラスクリプトを実行したら(bash)、何やらexprでmatchを用いて比較をしている箇所でsyntaxエラーが出ていたんですね。

なので、ちょっと見てみたところ、文法上特に問題はなさそう。

expr match [文字列1] [文字列2]
みたいな使い方をします。http://www.bookshelf.jp/texi/sh-utils/sh-utils-ja_5.html#SEC26

一応 CentOSで動かしてみてもやっぱり問題無し。

なのでmacのターミナル上でmanしてみたら意外な結果に

以下manの結果

NAME
expr - evaluate expression

SYNOPSIS
expr expression

DESCRIPTION
The expr utility evaluates expression and writes the result on standard
output.

All operators are separate arguments to the expr utility. Characters
special to the command interpreter must be escaped.

Operators are listed below in order of increasing precedence. Operators
with equal precedence are grouped within { } symbols.

expr1 | expr2
Returns the evaluation of expr1 if it is neither an empty string
nor zero; otherwise, returns the evaluation of expr2.

expr1 & expr2
Returns the evaluation of expr1 if neither expression evaluates
to an empty string or zero; otherwise, returns zero.

expr1 {=, >, >=, <, <=, !=} expr2
Returns the results of integer comparison if both arguments are
integers; otherwise, returns the results of string comparison
using the locale-specific collation sequence. The result of each
comparison is 1 if the specified relation is true, or 0 if the
relation is false.

expr1 {+, -} expr2
Returns the results of addition or subtraction of integer-valued
arguments.

expr1 {*, /, %} expr2
Returns the results of multiplication, integer division, or
remainder of integer-valued arguments.

expr1 : expr2
The ``:'' operator matches expr1 against expr2, which must be a
regular expression. The regular expression is anchored to the
beginning of the string with an implicit ``^''. expr expects
"basic" regular expressions, see re_format(7) for more informa-
tion on regular expressions.

If the match succeeds and the pattern contains at least one regu-
lar expression subexpression ``\(...\)'', the string correspond-
ing to ``\1'' is returned; otherwise the matching operator
returns the number of characters matched. If the match fails and
the pattern contains a regular expression subexpression the null
string is returned; otherwise 0.

Parentheses are used for grouping in the usual manner.

EXAMPLES
1. The following example adds one to the variable a.
a=`expr $a + 1`

2. The following example returns the filename portion of a pathname
stored in variable a. The // characters act to eliminate ambiguity
with the division operator.
expr //$a : '.*/\(.*\)'

3. The following example returns the number of characters in variable
a.
expr $a : '.*'

DIAGNOSTICS
The expr utility exits with one of the following values:
0 the expression is neither an empty string nor 0.
1 the expression is an empty string or 0.
2 the expression is invalid.

STANDARDS
The expr utility conforms to IEEE Std 1003.2 (``POSIX.2'').

BSD July 3, 1993


との事。
matchというキーワードは無いらしい。

ヤレヤレ、なので
len=`expr match $0 \\\/.*`

len=`expr $0 : \\\/.*`
と、コロン:を使った形に書き換えOK。

これで大丈夫と思いきや、まだエラーが出てる。

またまたexprでsyntax errorとか言ってる。

なので見てみると、今度はsubstrで文字列を切り出してる箇所でエラー。

expr substr string position length
ってな使い方をして、対象文字列stringのposition番目からlength分だけ文字列を切り出す働きをするのだけどエラー。

これも先ほど同様manして探してみると、何故か無い...

しかもこれはさっきのmatchみたく別の表現も見あたらず...検索したらこんな方法での代用を見っけた。
http://megawatt.blogdns.net/blog/194

上記を参考に
script_path=`expr substr ${script_path} 1 $len`

script_path=`echo ${script_path} | cut -b1-$len`
と変更


ただし、-bオプションはバイト数を引数にとるので、対象文字列が何なのかチェックが必要
日本語などのマルチバイト文字を扱う場合には注意が必要


う~ん、ディレクトリ構成とかでコケるかと思いきや、意外な所でコケたもんだ。

ほいで、最後にuseradd, groupaddでエラーが出た。
調べてみると、Macにはそれらのコマンドは無いとの事

http://www.osxgnu.org/software/pkgdetail.html?project_id=231&cat_id=205
上記のようにコマンドを追加するツールも配布されている模様。
やり方はココhttp://apple-tart.net/dokuwiki/doku.php?id=mac
ひとまず今回はこれは使わず、元からあるコマンドで代用する方法を探す


方法
http://blog.livedoor.jp/rotton79/archives/64928467.html
http://d.hatena.ne.jp/agw/20071028/1193629076

上記を参考に
・グループの追加
sudo dscl . -create /Groups/testGroup gid 108
※idの値に特に意味は無い
・ユーザの追加
sudo dscl . -create /Users/testUser gid 108
sudo dscl . -create /Users/testUSer name testUser testUser
sudo dscl . -create /Users/testUser passwd 'test'
sudo dscl . -create /Users/testUser uid 128

みたいな書き換えを行いエラー消滅♪

ちなみに、ユーザの削除は
sudo dscl . -delete /Users/<ユーザ名>
とすればいい。

あと、ちょっとしたトコロでは、スクリプト内でifconfigをして結果をパイプしている箇所でコケた。

何故かと思い調べてみると、Macの場合eth0はen0と表記するんですね。。

そのためeth0なんてもんは知らんってな具合のエラーが出てました。

なのでこれも修正。



ふぅ、結構疲れたぞ。。

けどまぁMacとUnixの双方を知れる良いトレーニングになり、昨日のバイトは充実してました。

まだまだ全然スキルの無い自分だけど、一歩一歩日々前進出来たらいいな。


さてさて、それではノシ


スポンサーサイト
  1. 2010/01/10(日) 01:24:20|
  2. mac
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク

今年も宜しくお願い致します。

少し遅くなりましたが、明けましておめでとうございます。

Twitterを頻繁に使うようになりあまりブログを更新しなくなってしまっているnagatakaです。(あ、ちなみにTwitterはコチラですので、興味があればフォローしてみてください)


昨年末は振り返りを出来ていないので、ちょっと振り返ってみようと思います。


まず、なんといっても昨年は就活でした。
無事に内定を頂けて本当に良かった。
就活を通して、色々な人と話せたし、自分自身の将来について、生き方についても真剣に悩んだ貴重な時間だった。

1月には国際学会という貴重な経験も出来ました。

また、貴重な経験と言えば、アルバイト。
PHPやMySQLを始め、Linuxの様々なTipsも学べたし、これまで自分が触った事の無かった技術に触れられ、また、アルバイトとはいえ、実際に開発をさせてもらえた事で多々感じる事があった。

まだまだ技術的にはダメダメな自分だけれど、過去の自分との相対値という事で言えば、相当な成長を実感出来て、本当にバイト先には感謝しています。


手帳に書き付けてあった目標を見てみると
1:資産を○○万に増やす
  →達成。
2:TOEIC900
  →未達成(860)
3:体重を○○kgに
  →達成
4:ハーフ完走
  →未達成(15km)

株式投資はとても貴重な経験になっています。
何も無い状態に比べて、保有銘柄であったり興味銘柄、分野など、自分の中に軸が出来るおかげで、漠然と読み流しがちだった新聞やニュースをいままでよりも深く考えられていると思う。
運用成績は
7.2%(利確済みのみ)
19%(含み益込み)
と、中々の運用が出来たと思います^^

保有している銘柄に関しても、三銘柄中二銘柄が先日(三日)の日経の「経営者が注目する銘柄」という特集にランクインと、一先ずあまり心配はしていません。


遊びに関して、去年はちょっとライブにあんまり行けなかったのが残念かな。
クラプトン、小沼ようすけ、MR.BIG、SUMMER SONIC、ジェイクシマブクロ、沖仁、吉井和哉
の七参戦。


何はともあれ、1年間健康で、沢山の事にチャレンジ出来たと思います。
昨年お世話になった皆さん、遊んでくれた皆さん、本当にありがとうございました、今年もよろしくお願い致します。


さて、では今年の抱負を。

なんといっても就職です。
社会人として、社会から様々なものを受け取るばかりだった側から、今度は社会に価値を生み出す側に回るのだという意識を持ち日々仕事に励みたいと思います。

そして、自分の周りの人達が、自分と一緒に仕事をする人達が気持ち良く過ごせるような人間でありたいと思います。

能書きよりとにかくまずは仕事を覚える事ですね。。頑張ります!


勉強に関して言えば
1:配属先で必要なスキル、知識をとにかく必死で勉強する事
2:グローバルに活躍するという将来の目標に向けて英語の勉強を継続する事
3:経営視点を身につけるために始めた勉強(マンキュー、ドラッカーなどを読む事)を継続する
4:資格 LPIC level1, TOEIC900, 応用情報技術者

遊び/趣味に関して言うと
1:なるべく休みの日は30分でもいいからギターに触る
2:マラソンの大会に出る。ハーフを完走する
3;10以上ライブに参戦する
4:忙しくても年間50冊くらいのペースで本を読みたい

資産運用に関して言うと
1:生活防衛資金を貯める(最終目標は30歳までに1年分の生活費を現金で貯める事)
2:従来のスタンス(逆張り、長期)で保有銘柄を増やす
3:総資産額を\○○○にする(給与の20%を投資に回し、一桁前半%の運用で達成可能)

が目標です。


そして、自分の周りの人と気持ちのよい関係を作る。
感謝を忘れず、そういう人間であろうと務める。

フラメンコにクロスバイクに山登りにAndroidプログラミングにetc様々な興味の赴くままに、時間と体力の許す限りチャレンジングでバイタリティ溢れる日々を送る事。

そんな1年にしたいなと思います。


みなさん、そして、四月以降仕事で関わりを持つかもしれない方々、是非是非よろしくお願い致します。



  1. 2010/01/04(月) 22:56:36|
  2. 雑記
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。