added quotes to avoid globbing, added tests for needed binaries so the script doesn't fail halfway through
Mbundle_deps.sh
@@ -1,19 +1,22 @@
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Usage: $0 BINARY DESTINATION"
programs=(ldd mkdir cd cp grep echo chmod awk xargs)
for prog in "${programs[@]}"; do
command -v "$prog" >/dev/null 2>&1 || { echo >&2 "This script requires $prog but it's not installed. Aborting."; exit 1;}
done
if [ $# -ne 2 ]; then
echo "Usage: $0 BINARY DESTINATION"
else
BINARY=$(realpath $1)
DESTINATION=$(realpath $2)
SCRIPTFILENAME="$DESTINATION/start_$(basename $BINARY).sh"
BINARY=$(realpath "$1")
DESTINATION=$(realpath "$2")
SCRIPTFILENAME="$DESTINATION/start_$(basename "$BINARY").sh"
read -r -d '' SCRIPTFILE << EOM
#!/bin/bash
LD_LIBRARY_PATH=./libs ./$(basename $BINARY)
LD_LIBRARY_PATH=./libs ./$(basename "$BINARY")
EOM
mkdir -p $DESTINATION && mkdir -p $DESTINATION/libs && cd $DESTINATION && cp $BINARY $DESTINATION
ldd $BINARY | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' $DESTINATION/libs &&
echo "$SCRIPTFILE" > $SCRIPTFILENAME && chmod +x $SCRIPTFILENAME
mkdir -p "$DESTINATION" && mkdir -p "$DESTINATION"/libs && cd "$DESTINATION" && cp "$BINARY" "$DESTINATION"
ldd "$BINARY" | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' "$DESTINATION"/libs &&
echo "$SCRIPTFILE" > "$SCRIPTFILENAME" && chmod +x "$SCRIPTFILENAME"
fi