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


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

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



1 名前:シェルスクリプトライター mailto:sage [2011/12/10(土) 20:06:40.38 ]
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。

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

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ
シェルスクリプト総合 その18
hibari.2ch.net/test/read.cgi/unix/1308195527/

次スレは >>970 で。

201 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 18:45:46.67 ]
>>198
ざっとbinutils、grep、awk、sedのソース漁ってみてが、無いな

202 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 18:50:17.20 ]
>>201
ボンクラがメクラ撃ちしたって当たらないって事の証明だな。

オレは一発でtailを見つけたが。w
lessもおそらくやってる。

203 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 19:00:26.75 ]
wc -c 1GB_file # 一瞬
< 1GB_file wc -c # 一瞬
cat 1GB_file | wc -c # 時間かかる

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 19:51:25.77 ]
>>203
これは俺にとって cat やめる理由になるな。

逆に言えばここまで出てきた書き込み程度ではあまり cat やめる気がしない。

でも何故だろうな。wc はソースしっかり読んだのに気が付かなかったなあ。

205 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 20:02:12.51 ]
色んなシステムの様々なシェルスクリプトで共通的に関数を使いたいときって、どういう方法が
効率がよいだろう

・.profileとかで共通関数を定義する
・共通関数だけのスクリプトを作ってセットで使う
・がんばってシェルスクリプトに埋め込んでいく

他にある?

206 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 20:10:17.98 ]
>>190
> バイナリファイルだとcat通すと0x1dが消えたりしてファイル壊すから危険。

どこのcat?

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 20:11:46.67 ]
>>205
ふつうはファイル別にしてsourceする。

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 20:12:38.04 ]
>>205
その 2 番目は source で読み込むという意味でOK?
. functions.sh


209 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 22:52:35.96 ]
>>200
なるほどね。確かにfstatだと区別できる。とても参考になった
特に前に戻るシークしか考えてなかったから、後半はその通りだわ。酷いレベルで気付かなかった



210 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/22(日) 23:23:48.64 ]
システムコールのマニュアルは全部読んどくといい。
全部読んでも大した量じゃないから。

211 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/23(月) 00:18:56.40 ]
>>203
wcに似たプログラムを自分で作ったことがあるんだけど、wcの方が処理が速いわけ
んでなぜwcの方が速いのかソースを調べたことがある。すげえ勉強になったよ

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/23(月) 01:08:55.19 ]
>>207
>>208
そうさね
現状は、sourceで読み込ませてる

で、今は共通関数をfunctions.shとしてマージして使ってるんだが、対象システムで
使われてない関数も一緒になってるんで、サイズが無駄に大きくなってる

しゃあねえのかなぁ

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/23(月) 01:33:25.92 ]
適切に分割して必要な分だけ読み込ませりゃいいじゃないか。

214 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 00:19:15.61 ]
シェルスクリプトの中で一行でpsql発行したいんだけどどう書けばいいかな
postgresユーザに切り替えてからpsqlでselect文(time列から現在時刻の一ヶ月前からのデータだけをとる)
叩きたいんだけど

TIME=1
sudo su - postgres -c 'psql -d データベース名 -c "select time from データベース名 where time > current_timestamp + '-${TIME} months';"'

どうにもうまくいかない…ファイルとかにsql書いてやるのじゃなくて1行でやりたいんだけど。。

215 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 01:28:32.12 ]
sudo su - postgres -c 'psql -d データベース名 -c "select time from データベース名 where time > current_timestamp + '"'-${TIME} months';\""
かなぁ

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 07:25:52.83 ]
postgresユーザーで実行するコマンドをスクリプトにしておいて、そのスクリプトをsuで実行すればいいだけ

>>ファイルとかにsql書いてやるのじゃなくて1行でやりたいんだけど。。
意味不明。

217 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 08:10:02.57 ]
>>215
ありがとうやってみる。
>>216
別ファイル?にして呼び出すということでしょうか。すみません初心者なので


218 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 09:34:29.11 ]
PGUSER=postgres
PGPASSWORD=xxxx
export PGUSER PGPASSWORD
pgsql -d foo -A -q -c "SELECT * FROM hoge";

こんな感じでいけるんじゃないの?




219 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 10:45:42.00 ]
select文の中で不等号と変数を使いたいんだ
そこがわからない



220 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 11:04:18.96 ]
zshの話?どこに使いたいの?

221 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 11:09:52.37 ]
>>214
postgresのselect文の構文は知らないので、↓
select time from データベース名 where time > current_timestamp + '-1 months';
このselect文が正しい結果を返すと仮定して、

>どうにもうまくいかない…ファイルとかにsql書いてやるのじゃなくて1行でやりたいんだけど。。
この「どうにもうまくいかない」ときに、sudo su ... コマンドから
どのようなエラーメッセージが出されているのかを具体的に教えください。

222 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 11:12:29.95 ]
ああごめん219は218へのレスです。
bashです。

223 名前:218 mailto:sage [2012/01/24(火) 11:18:56.48 ]
>>222
例えばMovableTypeへのアクセスだけど、これでいけたけど

psql -d foo -A -q -c "SELECT log_id,log_created_on FROM mt_log where log_created_on > current_timestamp + '-${TIME} month';"

224 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 12:06:10.33 ]
su: option requires an argument -- c
Try `su --help' for more information.
months > chg_date;': -c: line 0: unexpected EOF while looking for matching
`''months > chg_date;': -c: line 1: syntax error: unexpected end of file

225 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 12:11:56.62 ]
上記のような感じです
TIME=1
sudo su - postgres -c "psql -d データベース名 -c 'select time from テーブル
名 where current_timestamp + "-$TIME months" < time;'"
実行したのはこれです

226 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 12:17:14.76 ]
>>225
ダブルクォートの中で素のダブルクォート使っちゃ駄目。
そこでクォートが終了して別引数とみなされて su 側でエラーになってる。

227 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 12:17:51.07 ]
>>223
ユーザーを切り替えてからやるにはうしたらよいのでしょうかと

228 名前:218 mailto:sage [2012/01/24(火) 12:52:46.68 ]
>>227
postgres(root)でデータベースの実行をしたいだけだよね?
それを >>218で書いているわけだけど、それとも私が勘違いしているのかな

229 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 13:03:41.37 ]
/path/to/doit
------------------
#/bin/sh
TIME=1
psql -d データベース名 -c "select time from テーブル名 where current_timestamp + '-$TIME months' < time;"
------------------

# sudo su - postgres -c /path/to/doit



230 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 13:12:38.92 ]
228さんごめんなさい
僕が勘違いしているのだと思います
教えていただいた方法でやってみます

231 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/24(火) 14:36:27.74 ]
教えていただいた方々ありがとうございました
228さんの方法で問題なくできました!

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/25(水) 22:21:21.41 ]
total_size=`fdisk -l $device | grep Disk | awk '{print $5}'`
$deviceには/dev/sdbとか

このスクリプトをsudoで動かすと、total_sizeが空
rootになって実行すると、容量の数字が入ります。
どうして?


233 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/25(水) 23:47:33.70 ]
PATHが通ってない。

234 名前:232 mailto:sage [2012/01/26(木) 12:25:23.62 ]
>>233
PATHなの?


235 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/26(木) 12:35:38.39 ]
sudoってその辺の環境変数再設定しなかったっけ

236 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/26(木) 20:01:15.66 ]
>>232
sudoの中で変数に代入しても、sudoを抜けたら元のシェルの変数には入ってないよw

と、ボケておこう。

237 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/26(木) 20:31:33.86 ]
それボケなん?

238 名前:232 mailto:sage [2012/01/27(金) 12:23:26.54 ]
>>236
sudoを抜けてないんですが


239 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/27(金) 13:27:36.89 ]
やったことをもうちょい詳しく。



240 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/27(金) 15:10:58.95 ]
つ total_size=`sudo fdisk -l $device | grep Disk | awk '{print $5}'`


241 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/27(金) 19:32:43.61 ]
>>232
$ cat ./test.sh
#!/bin/sh
device=/dev/sda
total_size=`fdisk -l $device | grep "Disk $device" | awk '{print $5}'`
echo $total_size
$ sudo ./test.sh 2> /dev/null
21474836480

242 名前:232 mailto:sage [2012/01/28(土) 21:12:44.61 ]
すいません、遅くなりました

~$ cat mksd.sh
#! /bin/sh
device=$1
echo $device
total_size=`fdisk -l $device | grep Disk | awk '{print $5}'`
echo "total_size = $total_size"


~$ sudo ./mksd.sh /dev/sdb
/dev/sdb
total_size =

~$ su
パスワード:
# ./mksd.sh /dev/sdb
/dev/sdb
total_size = 3904897024
です



243 名前:232 mailto:sage [2012/01/29(日) 08:51:14.17 ]
>>241
あれ、すいません見てませんでした

~$ cat mksd.sh
#! /bin/bash

device=$1
echo $device

total_size=`fdisk -l $device | grep Disk | awk '{print $5}'`
echo "total_size = $total_size"
size=$[$total_size / 2]
echo $size


saito@ubuntu:~$ mksd.sh /dev/sdb
mksd.sh: command not found
saito@ubuntu:~$ ./mksd.sh /dev/sdb
./mksd.sh: line 9: /2: syntax error: operand expected (error token is "/2")


~$ su
パスワード:
# ./mksd.sh /dev/sdb
/dev/sdb
total_size = 3904897024
1952448512

なぜ、こうなるんでしょうか?



244 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/29(日) 09:09:10.62 ]
>>243
面倒だから /proc/partitions の方使えよ。こっちならroot権限要らん。
1kバイトのブロック単位だから、1024倍な。
引数は /dev/sdaじゃなく、sdaだけで指定する。

grep/awkとか使わずに内部コマンドだけで組んでみた。

$ cat hoge.sh

device=$1

while read x x blocks name && [ "$name" != "$device" ]
do :; done < /proc/partitions

total_size=$((blocks*1024))

$ ./hoge.sh sda
1000204886016

245 名前:243 mailto:sage [2012/01/29(日) 11:28:34.42 ]
>>244
ありがとう、ございます。



246 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/29(日) 12:12:34.09 ]
>>243
まだやってたんだ。

envやsetの出力差分とか見ないのか?

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 08:01:56.00 ]
>>242
↓の結果を比べてみる、とか。

#! /bin/sh
result=`fdisk -l /dev/sda`
echo "$result"

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 20:31:06.87 ]
標準入力からデータを読み込むようなbashスクリプトを書いています。
スクリプトの途中でread -s -n 1などとして画面をポーズしたいのですが、
標準入力にデータが渡されているため画面ポーズのためのreadにもそれが読み込まれてしまい、思ったように動作しません。
一旦ファイルディスクリプタの0番をクリアすれば良いのかと思うんですが、どのようにすれば実現できるでしょうか?

念のため、画面の一時停止はsleepなどでも可能なのは分かっていますが、
今回はreadで実現したいということでよろしくお願いします。

249 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 20:35:24.72 ]
>>248
read -s -n 1 < /dev/tty



250 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 20:51:23.68 ]
>>249
出来ました!こんな簡単な事だったんですね。
ついでに聞きたいんですが、一旦読み込まれた標準入力のクリアとかって無理なんでしょうか?
それと/dev/ttyは移植性のある?書き方なんでしょうか。
質問ばかりですみません。

251 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 20:56:36.52 ]
>>250
exec < /dev/tty
を実行すると、以降の行は標準入力が端末に戻るので
read -s -n 1
だけで行けるようになる。

/dev/ttyはどのOSでも移植性がある。

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/30(月) 21:24:08.05 ]
>>251
なるほど、そういうテクニックがあるんですね。
勉強になりました。
どうもありがとうございました。

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 01:12:06.63 ]
>>251
流石に「どのOSでも」は言い過ぎではw
まあsh動く環境ならまず大丈夫だとは思うから実害はないが

254 名前:名無しさん@お腹いっぱい。 [2012/01/31(火) 06:11:03.04 ]
>>253
いいや、「どのOSでも」OK。

反論するなら反例を挙げろや、カス。

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 08:01:25.65 ]
縛りはOSだけでいいの?
じゃ MS-DOS を挙げよう。
UNIX系OS特有なんだし、少なくともPOSIXに準拠してなきゃ持ってないよ。

256 名前:名無しさん@お腹いっぱい。 [2012/01/31(火) 08:27:24.42 ]
>>255
お前ほんとにアホだなw
MS-DOS ではシェル(スクリプト)は使えない。

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 08:32:02.94 ]
>>253
もとの質問の >>249 read -s -n 1 < /dev/tty の readの -s -n オプションは
bash依存だが、/dev/ttyがOS依存なんて話は聞いたことがない。

テストスクリプトとして
----
#!/bin/sh
echo hoge > /dev/tty
----
があるとして、このスクリプトが「/dev/tty」が無いのが原因で動かないようなOSを
挙げてくれるかな。>>253 よ。まあ、無理だろうけどw

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 08:36:03.03 ]
>>255
>POSIXに準拠してなきゃ持ってないよ

/dev/ttyはPOSIX以前からあるよ

259 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 08:48:05.58 ]
>>256-258
もうほっとけ。
質問者の質問に自分では答えずに、
正しく回答した回答者に後から間違ったつっこみを入れる >>253 のようなアホは
いつの時代にも居るから。



260 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 09:28:37.54 ]
FreeBSDでは/dev/ttyに直接アクセスしようとするまで存在しないのか。

261 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 09:39:19.39 ]
アスペだらけのスレで「posixな」とか「シェルスクリプトが動く」などの制約を付けずに
> /dev/ttyはどのOSでも移植性がある。
と言っちゃった>>253の負け。

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 10:03:34.61 ]
確かにそこだけ切り取ればWindowsも無いわな

263 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 10:05:33.60 ]
負けは>>253じゃなくて>>251だった。

264 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 10:09:49.20 ]
>>255
MS-DOS版の sh.exeでは /dev/tty動くぞ。sh.exe内部で解釈してるらしい。

265 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 12:57:13.51 ]
cl.ly/1z1S0Y2g3n0L133x0X2M

写真の同じやつ整理したくてこんなん書いたんだけど,
いかんせん遅い・・・
どうやったらもうちょっと早くなるかな?

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 13:33:07.43 ]
>>265
遅い原因は毎回md5sumを呼んでいるから
md5sum "$@"で求めておいて、その結果に対しての処理ならそれほど遅くない
アルゴリズムもcut -d' ' -f1してsortしてuniq -dして重複ファイルのMD5だけ列挙
そのMD5でgrepすればファイル名も分かるだろ

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 13:39:35.46 ]
一気にmd5取る、md5でソート、ユニークなものだけ移動。残りは重複したファイル。

ユニークなファイルのリスト
md5sum "$@" |sort -k 1 | uniq -w 32 |cut -d' ' -f 2

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 13:39:36.12 ]
rsyncを--dry-runで走らせるくらいで十分、かつ速いんじゃないかと
何の検証もせず言ってみる

269 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 16:00:18.26 ]
>>266-267
md5sumコマンド起動のオーバーヘッドより、
MD5計算時間の方がはるかに長いから、
毎回md5sumを呼んでも、ファイル名引数まとめてmd5sumを呼んでも
ほとんど改善しないよw

それより、まずはファイルサイズだけ見て、
同じファイルサイズのファイルが他にない場合は無条件でユニークなファイルとして
md5sum計算対象から除外した方がよい。



270 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 16:06:28.42 ]
写真ファイルの同一検出ならファイル全体のmd5計算しなくても、
適当な位置で4KBくらい抜き出すのでもよさそうな

271 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 17:27:47.76 ]
>>269
そんなところで高速化図ったんじゃねーよ。
見当はずれの言いがかり付けるって惨めだぞ。w

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 17:43:31.60 ]
>>269
ソース読んでないだろwどのみちMac何だからそういう機能持ったアプリありそうだと思う。それ使った方がいい

273 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 18:01:40.88 ]
読んだけどわからなかっただけだろ。

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 19:11:12.35 ]
openって何だろうと思ったらMacにはそういうコマンドがあるのか。

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 19:29:02.96 ]
で、openってなに?

276 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 20:30:08.94 ]
$ open foo.txt
$ open -a /Application/TextEdit.app foo.txt
$ open -a /Application/Emacs.app/Contents/MacOS/Emacs foo.txt
こんなコマンド。

277 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 21:06:38.95 ]
適当なアプリ探して、バックグラウンドでそいつを渡すわけね

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/31(火) 21:16:36.01 ]
openはNEXTSTEP由来でファイルやディレクトリを開くコマンド

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/01(水) 11:43:16.32 ]
OSXのopenコマンドは
open .
でカレントディレクトリをGUIで開かせるってのが一番使うかな



280 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/01(水) 12:05:32.98 ]
blogに書いてろ

281 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/01(水) 12:58:13.47 ]
>>269は理解できたのかな? w

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/01(水) 16:07:29.43 ]
md5 でなんとかなる程度なら
さいしょから samefile なり samesame でよいのでは

283 名前:265 mailto:sage [2012/02/01(水) 17:06:16.13 ]
cl.ly/221Q2p202r1f0g232K1Q

みんなありがとう!
こうかな?

284 名前:265 mailto:sage [2012/02/01(水) 17:09:15.95 ]
あ,最初で移動してたら次のmd5sumの$@がないて言われるね\(^o^)/

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/01(水) 18:13:12.63 ]
>>283
>>269は全然わかってないマヌケな素人だから、奴の指摘は全部無視していい。
サイズなんて調べる必要ない。

286 名前:名無しさん@お腹いっぱい。 [2012/02/01(水) 23:15:24.01 ]
testコマンドで質問です。
man testを見てみると、以下の2つのオプションの説明があります。

1.-nオプションのところ
True if the length of string is nonzero.

2.stringオプションのところ
True if string is not the null string.

これらの違いは、何があるのでしょうか?それとも同じなのでしょうか?
出来ればサンプルスクリプトで説明していただけると助かります。




287 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 00:06:01.32 ]
stringオプション?

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 00:19:26.32 ]
>>286
直接引用しろ。うちでは等価って書いてある

289 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 01:32:54.28 ]
シェルスクリプトの勉強をしたいのですが、
何シェルがいいですか。



290 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 01:40:36.62 ]
これの事だな。
www.freebsd.org/cgi/man.cgi?query=test&apropos=0&sektion=0&manpath=FreeBSD+9.0-RELEASE&arch=default&format=html

-n string True if the length of string is nonzero.
string True if string is not the null string.

違い
test -n $nonexistent; $? <= バグ? test -z $nonexistent; $?と矛盾する
test $nonexistent; $?


291 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 03:44:03.15 ]
>>289
>>1
特記ない限り bourne shell ということは、それを選択すれば無難ということ。
Linux オンリーなら bash だろうけど。

292 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 06:26:43.33 ]
>>289
そんな貴方に、Windows Power Shell。

293 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 08:40:58.52 ]
>>290
なんだよ、矛盾するって。

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 08:59:55.63 ]
自分が何調べてるかを理解してないだけに見える

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/02(木) 09:17:20.91 ]
オペレータだけ与えるとstringと解釈するのか。エラーにしろよお。

296 名前: 忍法帖【Lv=4,xxxP】 mailto:sage [2012/02/02(木) 23:56:58.70 ]
>>292
なんかUNIXのシェルより強力って書いてあるのが多いけどマジ?

297 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/03(金) 10:31:06.58 ]
「協力」の基準をどう考えるか次第でどうとでも

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/03(金) 20:58:42.50 ]
いま流行のステマとか

299 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/04(土) 08:30:04.97 ]
>>296
シェルそのものの機能は確かに強力だけど
肝心のコマンド資産がなさ過ぎて実用シェルとしてはなあ…



300 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/02/04(土) 08:42:10.79 ]
パワシェルはインタラクティブに使うとしょぼい。

301 名前:265 mailto:sage [2012/02/04(土) 22:16:58.57 ]
>>284
最終的にこれで出来ました!
みなさんありがとうお(^ω^)

cl.ly/152U342e2o212b2B1q3j






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

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

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