0
votes

Bash Valeurs séparées avec des virgules les entourent avec des citations de variables

J'ai le script Bash ci-dessous:

STR1="US-1234 US-7685 TKT-008953"
#STR2= "${STR1// /,}"
STR2=`echo $STR1 | sed 's/ /,/g'`
echo $STR2


2 commentaires

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.


4 Réponses :


0
votes
$ 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 ','

0 commentaires

2
votes

Vous pouvez utiliser xxx

voir Démo en ligne

Tous les espaces sont remplacés par ',' à l'aide de sed "s / / ',' / g" , ainsi que les guillemets simples et sortants sont ajoutés à l'intérieur d'un double chaîne citée.


0 commentaires

4
votes

avec bash et son expansion de paramètre: xxx

sortie: xxx


2 commentaires

Vous pouvez utiliser le truc de Wiktor et faire str2 = "'$ {str1 // / \', \ '}'"


Pourquoi pas seulement str1 = "'$ {str1 // / \', \ '}'" ? (vient de voir Sundeep a mentionné que cela aussi - ce serait bien de le voir dans la réponse).



0
votes

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'


0 commentaires