字符串 => 字符数组
Bash: Split string into character array
echo "abcdefg" | fold -w1 echo "abcdefg" | grep -E -o .
大小写转换
How to convert a string to lower case in Bash?
字符串重复(repeat)
How can I repeat a character
How do I find the width & height of a terminal window?
要在终端里打印一条分隔线,这条分隔线由”#“组成,宽度与终端的宽度相同;
# 问题一、如何重复字符串? printf '#%.0s' {1..100} # 问题二、如何获取终端的宽度? tput cols # 合并后的代码 # 可能你需要在结尾加上一个换行符,默认 printf 是不带换行符的 printf '#%.0s' $(seq $(tput cols))
urldecode
bash – How to decode URL-encoded string in shell? – Stack Overflow
在 Bash 中,进行 urldecode 的方法,以及相关问题处理。
这段代码从 Stack Overflow 复制而来
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } function urldecode() { local i="${*//+/ }"; echo -e "${i//%/\\x}"; }
第一个写法太奇怪了,里面包含各种 Bash 知识:
1): 是为了防止 “${*//+/ }” 被当作命令来执行
2)$_ 表示前个命令的最后一个参数,也就是 “${*//+/ }” 的解析结果
3)$* 表示传入命令的全部参数
4)${p/+/ } 表示将变量 p 的 + 替换为空格,而 ${p//+/ } 表示将变量 p 的全部 + 替换为空格;