R.A. Epigonos et al.

[dash] パイプでつなげた while で中間ファイルを作らない

中間ファイルを作ると後処理が大変なので。

dash はプロセス置換が使えないので、ヒアドキュメントを使おうという話。

#!/bin/sh

set -eux;

is_png () {
	local _FILE="${1}";
	local _FILE_TYPE="$(file \
		--brief \
		--mime \
		"${_FILE}" \
	;)";
	if test \
		"${_FILE_TYPE%;*}" = 'image/png' \
	;
	then
		return 0;
	fi
	return 1;
}

main () {
	local _FILE='';
	local _EXIT_STATUS=0;
	while read _FILE;
	do
		if ! is_png \
			"${_FILE}" \
		;
		then
			_EXIT_STATUS=1;
		fi
	done \
	<< END
$(find \
	. \
	-mindepth 1 \
	-maxdepth 1 \
	-type f \
| grep \
	'bash' \
;)
END
	return "${_EXIT_STATUS}";
}

main;
exit 0;

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2007-09-27T15:40:18+09:00
  2. Modified: 2007-09-27T15:40:18+09:00
  3. Generated: 2024-11-18T23:09:13+09:00