Comment puis-je écrire ceci avec un script AIX correctement? Mon exigence est d'écrire cette commande dans test.txt :
clock=$(prtconf -s | awk '{print $4,$5}')
J'ai essayé cette commande :
print 'clock=$(prtconf -s | awk '{print $4,$5}')' > test.txt
La sortie écrite dans test.txt me donne :
clock=$(prtconf -s | awk {print ,})
Si j'utilise " "
guillemets :
print "clock=$(prtconf -s | awk '{print $4,$5}')"
Cela me donne directement à :
clock=3612 MHz
Comment puis-je résoudre ce problème ?
Réponse acceptée :
Vous devez soit continuer à utiliser des guillemets simples, mais ensuite imprimer ceux dont vous avez besoin dans la sortie "séparément", soit utiliser des guillemets doubles et échapper les signes dollar.
Pour la deuxième option :
print "clock=$(prtconf -s | awk '{print $4,$5}')" > test.txt
Pour le premier :
print 'clock=$(prtconf -s | awk '''{print $4,$5}''')' > test.txt
(C'est 'text'
puis a échappé au guillemet simple '
puis 'other text'
.)
Par souci d'exhaustivité, notez que print
développe les séquences d'échappement de caractères antislash (cela n'a pas d'importance dans votre cas car la chaîne que vous souhaitez imprimer ne contient aucune barre oblique inverse). Pour éviter cela, utilisez print -r
.