Ok j'ai une fonction qui aura comme paramètre une chaîne et il émet un nouvelle chaîne que n'a pas ont des espaces , '
, "
Bash - Renommer le fichier qui ont "dans ce
function rename_file() {
local string_to_change=$1
local length=${#string_to_change}
local i=0
local new_string=" "
local charac
for i in $(seq $length); do
i=$((i-1))
charac="${string_to_change:i:1}"
if [ "$charac" != " " ] && [ "$charac" != "'" ] && [ "$charac" != """ ]; then #Here if the char is not" ", " ' ", or " " ", we will add this char to our current new_string and else, we do nothing
new_string=$new_string$charaC#simply append the "normal" char to new_string
fi
done
echo $new_string #Just print the new string without spaces and other characters
}
Mais je ne peux pas tester si le caractère est "
parce qu'il ne fonctionne pas seulement. Et si je l'appelle ma fonction avec
rename_file (file"n am_e)
il suffit d'ouvrir >
et attend moi pour entrer quelque chose .. toute aide?
Avez-vous essayé rename_file (fichier \ "n am_e) –
Si vous tapez (ou mettez un script)' rename_file (fichier "n ame)', alors vous n'avez pas appelé la fonction 'rename_file' avec l'argument' file "n ame." Au lieu de cela, vous avez entré le début d'une chaîne, et bash vous invite et vous attend pour terminer la chaîne.Essayez 'Rename_file file \" n ame' –
Vous ne savez pas si vous voulez une solution purement bash, mais puis-je suggérer un one-liner à la place? :) 'new_string = $ (echo $ string | sed -e 's///' -e 's /, //' -e 's /" //') '. Aussi, changez $ 1' en $ {@} 'en tant que paramètre de fonction, sinon il va se casser sur les espaces – favoretti