繁体   English   中英

转义空白字符

[英]Escaping Whitespace character

因此,我是使用bash脚本的新手,但是我是Java方面经验丰富的程序员。 我正在尝试通过使字符串经过一个循环来查看每个字符来评估字符串。 然后,它需要用连字符(“-”)替换所有空格。 这是我的代码:

for a in "${newdirectory[@]}"; do
str="LDAUU_"
str+=$a
echo $str | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | \
while read char
do
if [[ $char == "whitespacecharacter" ]]
then
str+="-"
else
str+=$char
fi
done

newdirectory变量是用户输入的数组,最初是一个单个变量,使用定界符“,”将其分隔为newdirectory数组。 for循环也将继续,但是与脚本的这一部分无关。 另外,我不希望完全重组我的代码。 我需要一些可以将while循环中的“ char”变量评估为空格字符的东西。 而已。 谢谢。

使用bash,您可以通过参数替换模式匹配一次完成所有操作

str="i am full of spaces"
dashes="${str//[[:blank:]]/-}"
echo "$dashes"                  # i-am-full-of-spaces

除了手册(上面已提及)外, BashGuideBashFAQ是进行bash编程的好资源。

我听说您,您不想“完全重组代码”。 但是,将5行换为/同时使记忆更加易读时,将不会被视为“完全重组”。

在bash中,给定变量str ,用破折号替换所有空格非常简单,只需执行以下操作:

str=${str// /-}

那将用'-'代替所有''的出现。

人们倾向于使用辅助工具,例如tr,awk和sed,在这些工具中bash可以更快地完成相同的工作,并且代码更简洁,请查看: http : //wiki.bash-hackers.org/syntax/pe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM