美文网首页
shell脚本——函数方法参数

shell脚本——函数方法参数

作者: Asteriskjs | 来源:发表于2020-03-30 11:31 被阅读0次

基本用法百度一下都有,但是对于一些偏僻但是实用的用法还是不好找
下面我就对这方面进行一下总结:
普通函数传参可以看这里: 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"

*示例说明:
参数{1}{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"
}

相关文章

网友评论

      本文标题:shell脚本——函数方法参数

      本文链接:https://www.haomeiwen.com/subject/lxwmuhtx.html