2017-04-26 2 views
0

Je vais avoir des problèmes obtenir mon code pour:intégrée Bash (non SED!) Rechercher et remplacer en utilisant des valeurs octal

for ((c=1; c<=$DirsArrCnt; c=c+$OneDirArrCnt)); do 
    # Replace every occurence of "/" (ASCII d47 o057) in path with "^A" (ASCII 1) 
    Hold="${DirsArr[$c]}" 
    DirsArr[c]="${Hold//\057/\001}" 
done 

Au départ, je sautée la variable Hold et utilisé l'élément de tableau directement, mais a pris que sur pensant que c'était le problème. Est-ce que je spécifie la valeur octale correctement?

Je crois que 57 est la valeur octale pour "/" à droite?

Répondre

1

Je pense que c'est ce que vous voulez:

DirsArr[c]="${Hold//$'\057'/$'\001'}" 

La syntaxe que vous utilisez comme un interprète \0 littéral 0 (à savoir ne fait rien différent par rapport à ne pas utiliser la barre oblique inverse). Vous avez besoin de la chaîne de style C pour que votre code numérique soit interprété par le shell.

+0

Merveilleux. Mon écho de nom de répertoire (clé de tableau) apparaît comme des caractères amusants au lieu de '/' qui doit l'être. Merci pour la réponse rapide :) – WinEunuuchs2Unix