← retour aux snippets

printf %%q: échapper des arguments pour bash

Générer une version sécurisée d'une chaîne pour réinjection dans le shell.

objectif

Afficher/consigner des valeurs prêtes à être collées dans un shell sans injection.

code minimal

printf '%q\n' "$UNSAFE_STRING"

utilisation

# écrire un script qui exporte des variables en toute sécurité
{
  printf 'export API_TOKEN=%q\n' "$API_TOKEN"
  printf 'export URL=%q\n' "$URL"
} > exports.sh

variante(s) utile(s)

# ré-échappement massif
while IFS= read -r line; do printf '%q\n' "$line"; done < list.txt > escaped.txt

notes

  • %q est une extension bash; pas POSIX sh.
  • ne déballez jamais automatiquement ce que vous ne contrôlez pas.