#!/bin/sh -e if [ -f "$__object/parameter/file" ] then file="$( cat "$__object/parameter/file" )" else file="/$__object_id" fi script="$( cat "$__object/parameter/script" )" if [ "$script" = '-' ] then script="$( cat "$__object/stdin" )" elif [ -f "$script" ] then script="$( cat "$script" )" fi file_from_target="$__object/explorer/file" sed_cmd='sed' if [ -f "$__object/parameter/regexp-extended" ] then sed_cmd="$sed_cmd --regexp-extended" fi if echo "$script" \ | "$sed_cmd" -f - "$file_from_target" \ | diff "$file_from_target" - \ > /dev/null then exit 0 fi # we can't use -i, because it's not posix, so we fly with tempfile and cp # and we use cp because we want to preserve destination file's attributes # shellcheck disable=SC2016 echo 'tmp="$__object/tempfile"' echo "$sed_cmd -f - '$file' > \"\$tmp\" << EOF" echo "$script" echo 'EOF' echo "cp \"\$tmp\" '$file'" # shellcheck disable=SC2016 echo 'rm -f "$tmp"' echo 'change' >> "$__messages_out" if [ -f "$__object/parameter/onchange" ] then cat "$__object/parameter/onchange" fi