好的,我有一个函数,它的参数是一个字符串,它将输出一个没有任何空格、'
、"
的新字符串。
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
}
但我只是无法测试字符是否为
"
,因为它根本不起作用。如果我使用以下方式调用我的函数:rename_file (file"n am_e)
它只是打开>
并等待我输入一些东西...有什么帮助吗?
rename_file(file"n ame)
,那么您并没有使用参数file"n ame
调用函数rename_file
。相反,您输入了一个字符串的开头,Bash正在提示您并等待您终止该字符串。请尝试rename_file file\"n ame
。 - William Pursellnew_string=$(echo $string | sed -e 's/ //' -e 's/,//' -e 's/"//')
。此外,请将$1
更改为${@}
作为函数参数,否则它会在空格处中断。 - favoretti's /,//'
正在替换,
,如果我想使用它来替换'
,它会打开相同的>
并等待我输入东西。 - Rom