bash: erreur de syntaxe près du jeton inattendu `('

18

J'essaie de télécharger le gestionnaire de téléchargement Flareget via wget j'obtiens une erreur

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz
bash: syntax error near unexpected token `('

Pourquoi cette erreur vient-elle et quelle est la solution pour cela?

Utilisateur enregistré
la source
J'ai reçu la même erreur en essayant de décompresser un fichier protégé par mot de passe. Le mot de passe était entre parenthèses. J'ai fini par devoir utiliser des guillemets doubles et simples pour éviter l'erreur. Exemple: mypass="'HWNevtQW9o2s)f'" unzip -P $mypass myfile
Jesse marque

Réponses:

22

Vous devez utiliser des guillemets simples 'ou doubles "autour de l'URL dans ce cas (et en général):

wget  'http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz'

À partir de maintenant, vous devez utiliser cette méthode en général lorsque vous utilisez une chaîne qui contient des parenthèses comme argument dans une commande. En effet, les parenthèses sont utilisées pour le regroupement par le shell de sorte qu'elles ne sont en aucun cas communiquées à une commande. Ainsi, le shell bash vous donnera une erreur de syntaxe:

$ echo some (parentheses)
bash: syntax error near unexpected token `('
$ echo 'some (parentheses)'
some (parentheses)
Radu Rădeanu
la source
6

C'est à cause des crochets. Vous devez leur échapper comme ceci:

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64\(stable\)_deb.tar.gz

Maintenant ça devrait marcher.

le chaos
la source