Je l'ai toujours remplacer chaque intégré unique d'un devis de la séquence: '\''
(c'est-à: citation barre oblique inverse citation citation) qui ferme la chaîne, ajoute un échappé de devis unique et rouvre la chaîne. J'ai souvent concocter un "quotify" dans mes scripts Perl pour faire cela pour moi. Les étapes seraient:
s/'/'\\''/g # Handle each embedded quote
$_ = qq['$_']; # Surround result with single quotes.
Ce joli beaucoup prend soin de tous les cas.
La vie devient plus amusant quand vous vous introduire eval
dans votre shell-scripts. Vous avez re-quotify tout nouveau!
Par exemple, créez un script Perl appelé quotify contenant les déclarations ci-dessus:
#!/usr/bin/perl -pl
s/'/'\\''/g;
$_ = qq['$_'];
puis l'utiliser pour générer correctement-chaîne entre guillemets:
$ quotify
urxvt -fg '#111111' -bg '#111111'
résultat:
'urxvt -fg '\''#111111'\'' -bg '\''#111111'\'''
qui peut ensuite être copié/collé dans la commande alias:
alias rxvt='urxvt -fg '\''#111111'\'' -bg '\''#111111'\'''
(Si vous avez besoin d'insérer la commande dans un eval, exécutez la quotify de nouveau:
$ quotify
alias rxvt='urxvt -fg '\''#111111'\'' -bg '\''#111111'\'''
résultat:
'alias rxvt='\''urxvt -fg '\''\'\'''\''#111111'\''\'\'''\'' -bg '\''\'\'''\''#111111'\''\'\'''\'''\'''
qui peut être copié/collé dans un eval:
eval 'alias rxvt='\''urxvt -fg '\''\'\'''\''#111111'\''\'\'''\'' -bg '\''\'\'''\''#111111'\''\'\'''\'''\'''