L'échappement des caractères spéciaux dans des variables bash

Je suis en train de lire un fichier contenant filepaths ligne par ligne et de scp les fichiers sur un autre serveur, mais à cause de certains caractères dans les noms de fichiers comme '(', ')', '& " etc. J'ai besoin d'échapper à la saisie:

input.txt:

/folder1/folderA/filename+(oh+how+nice,+parantheses)

script.sh:

#!/bin/sh

promote_to=random.server.com
dev_catalog=/folderX/
uat_catalog=/folderY/

while read line
do
uat_path=$(echo "$uat_catalog$line" | sed -e "s/(/\\\(/g" | sed -e "s/)/\\\)/g")
dev_path=$(echo "$dev_catalog$line" | sed -e "s/(/\\\(/g" | sed -e "s/)/\\\)/g")

scp $dev_path user@$promote_to:$uat_path
scp $dev_path".atr" user@$promote_to:$uat_path".atr"
done < "input.txt"

Sortie:

-bash: /folder1/folderA/filename+(oh+how+nice,+parantheses): No such file or directory
-bash: /folder1/folderA/filename+(oh+how+nice,+parantheses): No such file or directory
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
               [-l limit] [-o ssh_option] [-P port] [-S program]
               [[user@]host1:]file1 [...] [[user@]host2:]file2
ssh: random.server.com: Name or service not known
lost connection

Toute sorte d'aide est appréciée.

OriginalL'auteur Andrei Ionita | 2012-02-28