>>391 > errno is thread-local; setting it in one thread does not affect its value in any other thread. うちのLinuxのman errnoから引用。どこかで定められているはずだけど、どの規格か知らない
/* 例えばDJBのstr_len.c */ unsigned int str_len(const char *s) { const char *t; t = s; for (;;) { if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; } } ↓↓↓これでいいように思える↓↓↓ unsigned int str_len(const char *s) { const char *t; t = s; for (;;) { if (!*t) return t - s; ++t; } }
files="/tmp/test/" for a in {20140801,20140806} do for filepath in ${files}*${a}* do echo ${filepath} done done ------------------------------ /tmp/test/20140801.txt /tmp/test/*20140806* と表示されてしまいます。 20140806.txtは存在しないので /tmp/test/*20140806* が表示される理由が分かりません。 これを表示しないようにしたいのですが、 if文で存在確認するくらいしかないでしょうか?
files="/tmp/test/" for a in {20140801,20140806} do for filepath in `find ${files} -name ${a}*` do echo ${filepath} done done ------------------------------