I have to copy a file to a path with spaces in a bash script:
#!/bin/bash -ex
uuid=$(/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ${1}))
echo "Found UUID $uuid"
output="~/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision"
# this works
cp -v $1 ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision
# this does not work
cp -v $1 "$output"
the output:
+ cp -v build-assets/Company_Enterprise_Wildcard.mobileprovision '/Users/mles/Library/MobileDevice/Provisioning Profiles/ae8201ff-07e3-460c-a0ec-231e3e7b55c5.mobileprovision'
build-assets/Company_Enterprise_Wildcard.mobileprovision -> /Users/mles/Library/MobileDevice/Provisioning Profiles/ae8201ff-07e3-460c-a0ec-231e3e7b55c5.mobileprovision
+ cp -v build-assets/Company_Enterprise_Wildcard.mobileprovision '~/Library/MobileDevice/Provisioning Profiles/ae8201ff-07e3-460c-a0ec-231e3e7b55c5.mobileprovision'
cp: ~/Library/MobileDevice/Provisioning Profiles/ae8201ff-07e3-460c-a0ec-231e3e7b55c5.mobileprovision: No such file or directory
I'm on a Mac. The ~
, which is an alias to /Users/mles
does not get resolved. I've found a workaround by using
output="/Users/${USER}/MobileDevice/Provisioning Profiles/$uuid.mobileprovision"
but I would rather use ~
. How can I resolve the ~
alias in my output variable?