J'ai le script Bash ci-dessous:
STR1="US-1234 US-7685 TKT-008953" #STR2= "${STR1// /,}" STR2=`echo $STR1 | sed 's/ /,/g'` echo $STR2
4 Réponses :
$ echo 'US-1234 US-7685 TKT-008953' | sed -E "s/^|$/'/g; s/ /','/g" 'US-1234','US-7685','TKT-008953' $ # can also use \x27 and continue using single quotes for the expression $ echo 'US-1234 US-7685 TKT-008953' | sed -E 's/^|$/\x27/g; s/ /\x27,\x27/g' 'US-1234','US-7685','TKT-008953' s/^|$/'/g will add single quote at start/end of line s/ /','/g will replace space with ','
Vous pouvez utiliser voir Démo en ligne P> Tous les espaces sont remplacés par ',' code> à l'aide de
sed "s / / ',' / g" code>, ainsi que les guillemets simples et sortants sont ajoutés à l'intérieur d'un double chaîne citée. p> p>
avec sortie: p> bash code> et son expansion de paramètre:
Vous pouvez utiliser le truc de Wiktor et faire str2 = "'$ {str1 // / \', \ '}'" code>
Pourquoi pas seulement str1 = "'$ {str1 // / \', \ '}'" code>? (vient de voir Sundeep a mentionné que cela aussi - ce serait bien de le voir dans la réponse).
Utilisez le remplacement de la variable globale de Bash pour remplacer l'espace avec ',' code> et ajouter des citations autour de celui-ci:
$ str2=\'${str1// /\',\'}\'
$ echo $str2
'US-1234','US-7685','TKT-008953'
Voir aussi: Pourquoi $ (...) préféré sur des backtsks?
Voir aussi: mywiki.woolgedge.org/quotes . Exécutez votre script via shellcheck.net et cela vous dira de certaines des questions.