Skip to content

Instantly share code, notes, and snippets.

@cubedtear
Last active January 2, 2023 16:19
Embed
What would you like to do?
Self-updating bash script
#!/usr/bin/env bash
VERSION="0.0.2"
SCRIPT_URL='https://gist.github.com/cubedtear/54434fc66439fc4e04e28bd658189701/raw'
SCRIPT_DESCRIPTION=""
SCRIPT_LOCATION="${BASH_SOURCE[@]}"
rm -f updater.sh
function update()
{
TMP_FILE=$(mktemp -p "" "XXXXX.sh")
curl -s -L "$SCRIPT_URL" > "$TMP_FILE"
NEW_VER=$(grep "^VERSION" "$TMP_FILE" | awk -F'[="]' '{print $3}')
ABS_SCRIPT_PATH=$(readlink -f "$SCRIPT_LOCATION")
if [ "$VERSION" \< "$NEW_VER" ]
then
printf "Updating script \e[31;1m%s\e[0m -> \e[32;1m%s\e[0m\n" "$VERSION" "$NEW_VER"
echo "cp \"$TMP_FILE\" \"$ABS_SCRIPT_PATH\"" > updater.sh
echo "rm -f \"$TMP_FILE\"" >> updater.sh
echo "echo Running script again: `basename ${BASH_SOURCE[@]}` $@" >> updater.sh
echo "exec \"$ABS_SCRIPT_PATH\" \"$@\"" >> updater.sh
chmod +x updater.sh
chmod +x "$TMP_FILE"
exec updater.sh
else
rm -f "$TMP_FILE"
fi
}
update "$@"
echo "$@"
@andreas-becker
Copy link

andreas-becker commented Nov 2, 2021

SCRIPT_DESCRIPTION is unused and could be removed
${BASH_SOURCE[@]} double quote array expansions to avoid re-splitting elements

@cubedtear
Copy link
Author

SCRIPT_DESCRIPTION is unused and could be removed

It is intended as a placeholder in order to remember to describe the scripts usage. A comment would be enough, but they are easily forgotten.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment