35 lines
596 B
Bash
Executable File
35 lines
596 B
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
ends_with_bak() {
|
|
case "${1}" in
|
|
*.bak) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
_bak() {
|
|
filename="${1}"
|
|
mv "${filename}" "${filename}.bak"
|
|
}
|
|
|
|
_unbak() {
|
|
filename="${1}"
|
|
new_filename="$(echo "${filename}" | sed 's/\.bak$//')"
|
|
|
|
if [ -e "${new_filename}" ]; then
|
|
echo "Filename '${new_filename}' already exists" >&2
|
|
return 1
|
|
fi
|
|
|
|
mv "${filename}" "${new_filename}"
|
|
}
|
|
|
|
for filename in "${@}"; do
|
|
if ends_with_bak "${filename}"; then
|
|
_unbak "${filename}"
|
|
else
|
|
_bak "${filename}"
|
|
fi
|
|
done
|