基本用法百度一下都有,但是对于一些偏僻但是实用的用法还是不好找
下面我就对这方面进行一下总结:
普通函数传参可以看这里: https://www.runoob.com/linux/linux-shell-passing-arguments.html
对于括号的使用可以看这里:https://blog.csdn.net/taiyang1987912/article/details/39551385
函数参数里面有一种特殊的就是:带有空格的字符串参数
举个实际遇到的例子:
function log_basic_print() {
# background: ${1}
# foreground: ${2}
# sytle: ${3}
# log content: ${4}
}
你想要写这样个颜色高亮打印函数。
第一个参数:字体背景色
第二个参数:字体前景色
第三个参数:字体属性
第四个参数:日志内容
使用echo命令进行日志高亮显示你将怎么做呢?
我这样尝试过这样几种情况:
_i=0
LOG_CONTENT=""
for VAR in $@; do
((++_i))
if [ 4 -lt $_i ]; then
LOG_CONTENT=${LOG_CONTENT}${VAR}
echo $LOG_CONTENT
fi
echo $_i=$VAR
done
echo "\\033[${1};${2};${3}m${LOG_CONTENT}\\033[0m"
echo "\\033[${1};${2};${3}m${@}\\033[0m"
echo "\\033[${1};${2};${3}m${4}\\033[0m"
*示例说明:
参数{2} ${3} 这些都是数字数值,上网一查就能找到
字体颜色:30 - 39
字体背景颜色:40 — 49
示例结果:
输出结果都不对
示例原因:
导致样的原因也很简单,带有空格的字符串被当成了多个参数,当采用上面的方法,虽然拿到了字符串里面的内容,但是却丢掉了空格。
该怎么做?
将参数四开始到最后的所有参数当成一个参数处理。
function log_basic_print() {
# background: ${1}
# foreground: ${2}
# sytle: ${3}
# log content: ${4}
echo "\\033[${1};${2};${3}m${@:4}\\033[0m"
}