トップページunix
987コメント278KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/11/15(木) 18:57:33.11
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その20
http://toro.2ch.net/test/read.cgi/unix/1339083351/
0175名無しさん@お腹いっぱい。2013/01/26(土) 17:11:06.38
_人人人人人人人_
> bashの機能 <
 ̄Y^Y^Y^Y^Y^Y ̄
0176名無しさん@お腹いっぱい。2013/01/26(土) 17:39:24.66
>>174
bashの機能じゃなくてカーネル(システムコール)のexecve(2)の機能なんだけど。
0177名無しさん@お腹いっぱい。2013/01/26(土) 19:52:37.75
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=fs/binfmt_script.c
0178名無しさん@お腹いっぱい。2013/01/26(土) 23:23:34.63
BSD系って結構厳密みたいだね。
#!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh
のどこか適当なshを使ってという方法もできないような。
0179名無しさん@お腹いっぱい。2013/01/26(土) 23:31:57.82
それって厳密か?
0180名無しさん@お腹いっぱい。2013/01/27(日) 03:11:09.66
何を厳密といってるのか知らないけど、#!行ではオプションは一つしか指定できない。
↓これはダメ
#!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh
0181名無しさん@お腹いっぱい。2013/01/27(日) 08:31:23.75
>>180
だから、それはFreeBSDの仕様じゃなくてashの仕様でしょ。
0182名無しさん@お腹いっぱい。2013/01/27(日) 08:38:44.48
_人人人人人人人_
>  ashの仕様 <
 ̄Y^Y^Y^Y^Y^Y ̄
0183名無しさん@お腹いっぱい。2013/01/27(日) 09:16:38.06
>>176
http://linux.die.net/man/2/execve
The interpreter must be a valid pathname for an executable which is not itself a script.
って書いてあるけど。

>>177
http://www.tamacom.com/tour/kernel/linux/S/11237.html#L19 だと
26 if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || (bprm->sh_bang))
27 return -ENOEXEC;
となってるので、仕様変えたのかな。

これ、
# cat /bin/aho
#!/bin/baka

$ cat /bin/baka
#!/bin/aho

とループしてたらどうなる?
0184名無しさん@お腹いっぱい。2013/01/27(日) 09:31:47.72
>>183
仕様変えた。Linuxでも古いカーネルだと#!/スクリプトは不可。

#!スクリプトがループしてた場合は単にexecve(2)がエラーになるだけ。
一応ループ判定はしてるみたい。
0185名無しさん@お腹いっぱい。2013/01/27(日) 09:43:22.30
>>183
スクリプトのネスティングが4回程度でエラーになるようになってるから、
ループしてたらそれでエラーになる。無限ループでハマることはない。
0186名無しさん@お腹いっぱい。2013/01/27(日) 10:16:14.90
なるほど、
>>177
25 if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') ||
26 (bprm->recursion_depth > BINPRM_MAX_RECURSION))
BINPRM_MAX_RECURSIONまでは再帰するのか。
>>183の例では/bin/aho, /bin/bakaの実行を何回も試みてBINPRM_MAX_RECURSIONに
達してやっとエラーか。 ダサッ
0187名無しさん@お腹いっぱい。2013/01/27(日) 10:42:07.89
シンボリックリンクのループ検出と一緒だろ。OSによらず。
2つだけでループしててもMAXに達するまでずっとたどってようやくエラー。
0188名無しさん@お腹いっぱい。2013/01/27(日) 12:47:54.49
そういえばそうだな。でも自己参照くらいはその場でチェックしてもいいだろ。
$ cat /bin/aho
#!/bin/aho
0189名無しさん@お腹いっぱい。2013/01/27(日) 12:52:21.55
その場でチェック()
0190名無しさん@お腹いっぱい。2013/01/27(日) 13:55:52.24
Patches Welcome
0191名無しさん@お腹いっぱい。2013/01/27(日) 14:29:29.40
そもそも自己参照していない正常なスクリプトの方が圧倒的に多いんだから、
自己参照をチェックするとそのオーバーヘッドが、全ての正常なスクリプトにも
負担させられることになって、実行速度がかえって遅くなるかと。
0192名無しさん@お腹いっぱい。2013/01/27(日) 16:42:35.29
ファイルからの読み込み行ってるんだから、スクリプトファイル名の比較の
負荷なんてゴミでしょ。
0193名無しさん@お腹いっぱい。2013/01/27(日) 17:04:30.10
>>192 のプログラマのセンスのなさはわかった。
0194名無しさん@お腹いっぱい。2013/01/27(日) 17:42:33.16
>>193
具体的に解説ヨロシク
0195名無しさん@お腹いっぱい。2013/01/27(日) 17:53:16.99
まずコードを書け、話はそれからだ
0196名無しさん@お腹いっぱい。2013/01/27(日) 18:21:24.09
>>195
だよな
>>193には具体的なコードを示す義務がある
0197名無しさん@お腹いっぱい。2013/01/27(日) 18:25:49.84
>>196
何を言ってるんだ?コードの話をしているお前ら全員だよ
0198名無しさん@お腹いっぱい。2013/01/27(日) 19:34:09.72
>>187
> シンボリックリンクのループ検出と一緒だろ。OSによらず。

シンボリックリンクのループ検出なんてある?
どういった場合に検出する?
0199名無しさん@お腹いっぱい。2013/01/27(日) 19:56:14.74
>>198
$ ln -s hoge /tmp/hoge
$ cat /tmp/hoge
cat: /tmp/hoge: Too many levels of symbolic links
0200名無しさん@お腹いっぱい。2013/02/12(火) 18:33:08.66
ttp://d.hatena.ne.jp/m-hiyama/20071221/1198221671
some-command 3>&1 >/dev/null 2>&3 3>&- | less

1番の値が最終的にどこいったのがかわからんのです・・・
1→3→2とコピーされて標準エラー出力になるんじゃないの?
0201名無しさん@お腹いっぱい。2013/02/12(火) 18:46:22.72
>>200
1は/dev/nullだよ。
0202名無しさん@お腹いっぱい。2013/02/12(火) 18:53:12.63
>>200
1は3経由で最終的に2にコピーされて、その状態でsome-command が実行されてる、
で合ってるよ。

その「2にコピーされたもの」はパイプの入力だから、
結果的にsome-commandの標準エラー出力がパイプにつながる。

some-commandの標準出力は >>201 のとおり /dev/nullに捨てられてる。
0203名無しさん@お腹いっぱい。2013/02/12(火) 19:05:35.88
リダイレクトは左から順番に解釈していけば良いよ。
(1) 3は1(標準出力)に向けられる。
(2) 1は/dev/nullに向けられる。
(3) 2は3(標準出力)に向けられる。
(4) 3は閉じられる。
結果として
1は/dev/nullに2は標準出力に向いてる。
0204名無しさん@お腹いっぱい。2013/02/12(火) 20:55:57.35
再度質問です
shの機能で >>200 みたいに だーってリダイレクトが出来るじゃないですか
その文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
出来ますの?勿論ググりましたが、当方馬鹿なのでわかりません
サルでも分かるような回答を強く期待します
僕はこういう小バカにしたような書き方しか出来ませんが、凄く切実に知りたいです
さぁどうぞ↓
02052002013/02/12(火) 21:09:43.68
うごごごご
0206名無しさん@お腹いっぱい。2013/02/12(火) 21:24:31.15
>>204
> aその文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
ktrace とか truss とか strace ってのはダメ?
0207名無しさん@お腹いっぱい。2013/02/14(木) 11:04:26.66
シェル変数にコマンドを文字列として設定しておいて、それを実行したい。

CMD="printf '%x %x\n'" #これはダメ
$CMD 13 32
を実行して
printf '%x %x\n' 13 32
と同じ出力を得たい。
$CMD 13 32の行は変更不可。

CMD="printf '%x %x\n'"ではダメでした。
CMDにどのような文字列を与えると実現できるでしょうか?
bashの拡張機能を使ってもよいですが、なるべく使わない方向で。
0208名無しさん@お腹いっぱい。2013/02/14(木) 11:09:32.45
お題が不正確でした
> $CMD 13 32の行は変更不可。

$CMD 13 32

を含むシェルスクリプトがある。環境変数としてCMDを与えて
printf '%x %x\n' 13 32
と同じ出力を得たい。
CMDに
#!/bin/sh
printf '%x %x\n' "$@"
というスクリプトのパスを与える方法は思いつきましたが、スクリプトファイルを作成しないで実現したい。
0209名無しさん@お腹いっぱい。2013/02/14(木) 11:44:48.59
>>208
CMD='printf %x\040%x\n'

バックスラッシュが化けるので全角にしたので半角に直してね
0210名無しさん@お腹いっぱい。2013/02/14(木) 13:05:11.46
evalって知ってる?便利だよ
0211名無しさん@お腹いっぱい。2013/02/14(木) 13:12:07.63
>>210
> $CMD 13 32の行は変更不可。

evalも使用不可
0212名無しさん@お腹いっぱい。2013/02/14(木) 14:38:40.47
>>211
CMDの中にeval入れれば行けるだろ

CMD="eval print ..以下略
0213名無しさん@お腹いっぱい。2013/02/16(土) 14:38:00.54
>>212
それでOKでした。
0214名無しさん@お腹いっぱい。2013/02/16(土) 21:58:07.02
>>211
>>211
>>211
0215名無しさん@お腹いっぱい。2013/02/17(日) 00:35:16.20
ももクロはズリネタ探しをしている人には理解出来ないよ
0216名無しさん@お腹いっぱい。2013/02/17(日) 00:51:10.81
awkのprintで
1, print $2
2, print \$2
3. print\ \$2
1、2は2列目て事だと思うけど3てどうなるの?
02172152013/02/17(日) 01:31:05.17
あれ・・盛大に誤爆ってたwごめん
0218名無しさん@お腹いっぱい。2013/02/17(日) 02:55:22.76
>>214
呼び出すところが変わってないから良いんじゃないの?
0219名無しさん@お腹いっぱい。2013/02/20(水) 21:18:41.67
2chの画像スレ開いて、Ctrl+aでコピーしたのをdl.txtにコピーしておいて
そのカレントフォルダでこれ実行すると、びっくりするほどユートピア
grep -E "(^http|^ttp)" dl.txt |sed -e "s/http/ttp/g; s/ttp/http/g"| wget -A jpg,png,gif -N -i -
0220名無しさん@お腹いっぱい。2013/02/20(水) 21:43:00.53
昔そういう事やってたけど
グロ画像が紛れ込んじゃうからやめたよ
安心してシコシコできない
02212192013/02/20(水) 21:54:17.39
>>220
それなんだよ...URLのブラックリストとか出来ないかな?まぁ出来ても遅くなりそうだけど
0222名無しさん@お腹いっぱい。2013/02/20(水) 22:04:29.90
ブラックリスト作っておいてgrep -vで除外するくらいかな?
いちいちグロ画像調べてNG登録するのが嫌でね…
0223名無しさん@お腹いっぱい。2013/02/20(水) 22:48:10.03
grepしてからsedですか、そうですか
0224名無しさん@お腹いっぱい。2013/02/21(木) 00:53:50.25
>>221
専ブラ使えよ。
グロってレスがついてたら、モザイクかけてくれたり。
0225名無しさん@お腹いっぱい。2013/02/21(木) 01:03:43.88
>>219
スレとってくんのもwgetでいいだろ。なぜに手動。
0226名無しさん@お腹いっぱい。2013/02/21(木) 10:19:46.09
>>224
>グロってレスがついてたら、モザイク
それ便利そうだな! どこの専ブラ?
うちはかちゅ〜しゃ使ってるけど
0227名無しさん@お腹いっぱい。2013/02/21(木) 13:17:14.46
>>220
いやいや、落としたら、シコシコする前に、まず賢者モードで分類とか整理しろよ。
0228名無しさん@お腹いっぱい。2013/02/21(木) 15:56:58.86
>>227
モード切替どうやってするつもりだよ
0229名無しさん@お腹いっぱい。2013/02/21(木) 21:47:15.77
>>226
2chmate
0230名無しさん@お腹いっぱい。2013/02/22(金) 12:12:03.87
シェルスクリプト内でtarアーカイブ化するとき、アーカイブ名に変数を指定したいのですが、
エラーが出てtarが生成されません。なにが間違っているか教えてください。

strArch="~/Desktop/a.tar"
/usr/bin/tar cf ${strArch} 1.jpg 2.jpg 3.jpg
と書くと
/usr/bin/tar: ~/Desktop/a.tar: open 不能: No such file or directory
/usr/bin/tar: Error is not recoverable: exiting now
というエラーが出ます。

一方、
/usr/bin/tar cf ~/Desktop/a.tar 1.jpg 2.jpg 3.jpg
と書くと正常にa.tarが生成されます。
02312302013/02/22(金) 12:13:52.84
環境はcygwinで、シェルはbashです。
0232名無しさん@お腹いっぱい。2013/02/22(金) 12:40:05.30
>>230
変数の中のチルダは展開されない。
$HOME/Desktop/a.tar
を使え。
0233名無しさん@お腹いっぱい。2013/02/22(金) 13:01:39.80
>>232
できました!
ありがとうございました。
0234名無しさん@お腹いっぱい。2013/03/06(水) 16:19:19.20
iPhoneのSBSettingsのトグルを押すとIMAProwlが起動するようにしたいのですが嵌りました。
/private/var/mobile/Library/SBSettings/Commandsにcom.hoge.imaprowl-launch-when-toggle-is-off
というスクリプトから、/private/var/root/scripts/に置いたprowlchk.shを実行してimaprowl.rbを起動
させたいのですが失敗してます。
ターミナルから直接prowlchk.shを実行すれば起動します。

com.hoge.imaprowl-launch-when-toggle-is-offの中身は
#!/bin/sh

touch /var/mobile/Library/Preferences/com.hoge.imaprowl.flagfile

echo "com.hoge.imaprowl-launch-when-toggle-is-off" >>/var/mobile/script.txt

source /private/var/root/scripts/prowlchk.sh

です。
0235名無しさん@お腹いっぱい。2013/03/06(水) 16:27:07.05
/private/var/root/scripts/に置いたprowlchk.shの中身は

#!/bin/sh

ps ax | grep '[i]maprowl'

if [ $? -eq 1 ]; then
cd /private/var/root/IMAProwl
./imaprowl.rb
fi

です。

private/var/mobile/Library/SBSettings/Commands/com.hoge.imaprowl-launch-when-toggle-is-off
をターミナルから実行すると、
883 s000 R+ 0:00.02 /bin/sh ./com.hoge.imaprowl-launch-when-toggle-is-off
となって、ログにボタンが押された事は出力されてますが、
/private/var/root/scripts/に置いたprowlchk.shは実行されずに、imaprowl.rbが起動しません。
検索してみてcdじゃなくドットコマンドやらsource使えだの試してみましたが、限界です。
アドバイス下さい。
0236名無しさん@お腹いっぱい。2013/03/06(水) 16:33:01.26
grep '[i]maprowl'
のところで、
com.hoge.imaprowl-launch-when-toggle-is-off
自身が引っかかっててif文の内部が実行されてないんじゃないの?
0237名無しさん@お腹いっぱい。2013/03/06(水) 17:07:14.83
>>236さん、全く気が付かなかったです、今からちょっと治して試してみます、ありがとうございます。
0238名無しさん@お腹いっぱい。2013/03/06(水) 17:18:45.56
ファイル名変えて動きました。
>>236さん有難う御座いました。助かりました。
02392342013/03/06(水) 20:58:57.40
連投してすみません。
>>236さんのアドバイスで
/private/var/mobile/Library/SBSettings/Commandsにcom.hoge.imaprowl-launch-when-toggle-is-off
から
/private/var/root/scripts/prowlchk.shを実行させることが出来るようになったのですが、
IMAProwlがDaemon化に失敗しているのかすぐに落ちてしまいます。

ターミナルから直接/private/var/root/scripts/prowlchk.shを実行すると、
hoge:~ root# /private/var/root/scripts/prowlchk.sh
LoadConf: /private/var/root/IMAProwl/config.yml
hoge:~ root# Daemonized. PID=4412
All logs will be written into /var/root/logs/imaprowl.log.

となって、ps axで見てみると
4412 ?? S 0:02.23 /usr/bin/ruby ./imaprowl.rb
でstatがSでちゃんとimaprowlが動作するのですが、

com.hoge.imaprowl-launch-when-toggle-is-offからprowlchk.shを実行した直後に、
ps axで見ると
4549 ?? R 0:02.75 /usr/bin/ruby ./imaprowl.rb
でstarがRになっています。
もう一回ps axで見ると./imaprowl.rbが落ちています。

なんでSにならずにRになってしまうのか、全く見当が付きません。
prowlchk.shに不足や問題があるんでしょうか。
0240名無しさん@お腹いっぱい。2013/03/10(日) 20:45:09.98
cat のコマンドライン引数で指定できる参照ファイルの数はいくつなのか、どうしたらわかりますか
0241名無しさん@お腹いっぱい。2013/03/10(日) 21:09:19.61
>>240
ファイルの数での制限じゃなくて、引数(ファイル名)の文字列の合計のバイト数で制限される。

man sysconf で出てくる sysconf(_SC_ARG_MAX) の値が最大値。
普通2MB程度ある。
0242名無しさん@お腹いっぱい。2013/03/11(月) 09:14:37.19
>普通2MB程度ある。

「普通」と言い切るには辛いような。

>uname -sr; getconf ARG_MAX
FreeBSD 9.0-RELEASE-p3
262144

$ uname -sr; getconf ARG_MAX
Linux 2.6.18-194.11.4.el5
131072

$ uname -sr; getconf ARG_MAX
Linux 2.6.32-279.9.1.el6.x86_64
2621440
02432402013/03/12(火) 01:55:55.14
なるほどめちゃよくわかりました
0244名無しさん@お腹いっぱい。2013/03/12(火) 06:45:07.31
なるほど普通のOSでは2.5MBほどあるんですね
0245名無しさん@お腹いっぱい。2013/03/12(火) 07:26:34.92
昔の普通のOSでは数KB程度だったよ
0246名無しさん@お腹いっぱい。2013/03/12(火) 09:39:44.34
windowsなんてもっともっと少なかったような。
0247名無しさん@お腹いっぱい。2013/03/12(火) 10:34:57.84
DOSは128バイト
0248名無しさん@お腹いっぱい。2013/03/12(火) 19:35:11.23
>>247
MS 系の OS はほとんど使ったことがないので聞くんだけど,

Unix 系でも, tty からの入力に対しては別の制限があること
はあるけど, それは, スクリプト内部の処理でも同様だったの?

だとすると, グロブの展開できないんじゃないの?
0249名無しさん@お腹いっぱい。2013/03/12(火) 20:06:02.97
MS-DOSはCP/Mと互換のメモリ配置で、CP/MではDMAバッファ領域(80H〜FFH)
だったところに初期値としてコマンドライン引数が展開された。
グロブの展開はシェルの仕事ではなく、プログラムが自分でやる。

MS-DOSの新しい奴は知らん。
0250 忍法帖【Lv=4,xxxP】(1+0:8) 2013/03/12(火) 21:04:44.16
ps ax って人と ps -ef って人がいるんだけど、どっちなのよ
0251名無しさん@お腹いっぱい。2013/03/12(火) 21:08:27.16
ps axはbashの機能
0252名無しさん@お腹いっぱい。2013/03/12(火) 21:35:11.65
SYS-VとBSDの違いだろ
0253名無しさん@お腹いっぱい。2013/03/12(火) 22:16:08.23
DOSの話はよその板でやれよ。
0254名無しさん@お腹いっぱい。2013/03/13(水) 07:44:16.19
ps -efはDOSの機能
0255 忍法帖【Lv=4,xxxP】(1+0:8) 2013/03/13(水) 07:53:20.45
>>254
Redhatで出来てるけど
0256名無しさん@お腹いっぱい。2013/03/13(水) 08:59:58.41
>>252
書く順番が逆じゃんw

linuxのpsはどっちも理解する。
0257名無しさん@お腹いっぱい。2013/03/13(水) 09:36:44.66
>>256
linuxっていうかGNUのpsな
0258名無しさん@お腹いっぱい。2013/03/13(水) 12:40:03.05
>>256
もとより順番揃えて書いてないんだけど・・・
0259名無しさん@お腹いっぱい。2013/03/13(水) 12:52:37.70
それは意識して揃えようよ
0260名無しさん@お腹いっぱい。2013/03/13(水) 17:23:13.42
構文が合ってるはずなのに、どうしても動いてくれないスクリプトがある。
メインスクリプトから裏で呼び出されるため、コンソール上でエラーを確認できなかった。
一晩みても、原因不明だった。 echo ここまでOK >>log.txt を随所に入れて
トレースデバッグすると、途中で止まる。あきらめて寝た。

翌日、再開したら1分で原因判明!
他言語とゴッチャになって、1箇所だけコメントの先頭をセミコロンにしてたwww
#に直したら一発起動。はぁあああああああああああ。

あとテストの [ $a =1 ] とイコールの次にスペースを開け忘れて、
常に不動作のif文もあった。

こういう超基本的な凡ミスに対して、作りたてのスクリプトを流し込むと
アラートを出すツールってありますか?
windows上でもシェル上でも、どちらでもおkです。
0261名無しさん@お腹いっぱい。2013/03/13(水) 17:40:25.41
>>260
それってどうやってミスなのか意図的なのか判断するんだよ?
キミがミスした所は使い方によっては正しい場合もあるんだよ。
0262名無しさん@お腹いっぱい。2013/03/13(水) 17:40:46.27
ありません。これ昔からだなぁ
ハイ次↓
0263名無しさん@お腹いっぱい。2013/03/13(水) 17:56:47.43
>>261
そりゃそうなんだけど、イコールの次にスペースないよ、とかwarningレベルで教えてくれるとか

http://server-retrieval.sakura.ne.jp/sakura/ga/g10.gif

こういうの、ないの?
0264名無しさん@お腹いっぱい。2013/03/13(水) 17:57:47.72
>>261
横槍を入れてすまんが、
「これってミスじゃねーの?」っていちいち指摘してくるコンパイラがあるのだから、
シェルスクリプトも同様の支援プログラムがあってもよいのでは。
需要があるのかどうか知らないが。
0265名無しさん@お腹いっぱい。2013/03/13(水) 18:25:45.28
sh -n
0266名無しさん@お腹いっぱい。2013/03/13(水) 18:26:09.13
>>263
ないよ。
0267名無しさん@お腹いっぱい。2013/03/13(水) 18:28:30.23
>>264
需要はあるね
走行するまでわからん、ってのはダサいからな
0268名無しさん@お腹いっぱい。2013/03/13(水) 18:29:08.34
>>263
その=はファイル名の=かもしれないからなぁ
[ $a =1 ]
はもしかしたらa='-d'でファイル「=1」がディレクトリかどうか
判断してる場合もあるよ
ところで数値のテストをしたいなら
[ $a -eq 1 ]
とした方が良いんじゃないかな
0269名無しさん@お腹いっぱい。2013/03/13(水) 18:33:28.83
>>268
warningはほしいよな
Cコンパイラですら = と == は警告対象だ
0270名無しさん@お腹いっぱい。2013/03/13(水) 18:38:16.82
たとえあったとして、「このセミコロンって#の間違いじゃね?」とか警告だすか?
それはそれでウザいんだが。
0271名無しさん@お腹いっぱい。2013/03/13(水) 18:42:23.86
>>263
必要だと思う人が作ればいいさ。
0272名無しさん@お腹いっぱい。2013/03/13(水) 18:46:38.57
そうだな自分が良く間違うパターンを検索するスクリプトを書けば良い。
他の人には必要ないよ。
0273名無しさん@お腹いっぱい。2013/03/13(水) 22:01:47.54
>>250
「カッコウはコンピュータに卵を産む」で、侵入者が使ったpsコマンドの
オプションから、SysVユーザーと看破していた。
0274名無しさん@お腹いっぱい。2013/03/13(水) 22:25:37.58
それわざわざ書き込むほどのことか?
■ このスレッドは過去ログ倉庫に格納されています