awk调用shell函数

 

[work@ shell_test]$ more conf_func_test.sh
#!/bin/sh

 

function method_add
{
        if [ $# -le 0 ]
        then
                return 1;
        fi

        fn_param=($@)
        fn_errmsg=""
        for((i=2;i<${fn_param[0]};i++))
        do
                fn_errmsg="${fn_errmsg}[${fn_param[${i}]}]"
        done

        if [ $# -le ${fn_param[0]} ]
        then
                echo "${fn_errmsg} param number error! ($# -le ${fn_param[0]})" >> "${fn_param[1]}"
                return 1
        fi

        local fn_res=0
        for((i=${fn_param[0]};i<$#;i++))
        do
                fn_res=`expr ${fn_res} + ${fn_param[${i}]}`
                if [ $? != 0 ]
                then

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要避免shell函数参数和awk语句参数之间的冲突,应该使用双引号将参数括起来,以确保参数的正确传递。比如,在shell调用awk,可以使用“awk -F ‘‘ '{print $1}' ”,而不是“awk -F '{print $1}' ”。 ### 回答2: 为了避免shell函数的参数和函数awk语句的参数冲突,可以采取以下几种方法: 1. 使用局部变量:在函数中使用局部变量来保存awk语句的参数,这样就不会与shell函数的参数冲突。可以使用类似于`local`关键字或者在函数内部定义变量的方式来创建局部变量。 2. 给函数参数和awk语句的参数使用不同的命名:可以在定义函数时,给参数取不同的名称,以避免与awk语句中的参数发生冲突。可以使用有意义的变量命名,或者在参数名称前加上前缀或后缀,以区分不同的参数。 3. 使用引号:在shell函数中,可以使用引号来包裹awk语句中使用的参数。这样,参数将被视为一个整体,不会与函数参数造成冲突。可以使用单引号或双引号来包裹参数。 4. 使用转义符:如果awk语句中的参数与函数参数发生冲突,可以在参数前加上转义符号(例如反斜杠),以告诉shell解释器该参数是awk语句中的内容,而不是函数的参数。 综上所述,避免shell函数的参数和函数awk语句的参数冲突的方法主要有使用局部变量、给函数参数和awk语句的参数使用不同的命名、使用引号以及使用转义符。根据实际情况选择合适的方法可以确保函数的参数和awk语句的参数不会发生冲突。 ### 回答3: 要避免shell函数的参数和函数awk语句的参数冲突,可以采取以下几种方法: 1. 给shell函数的参数和awk语句的参数使用不同的命名方式。例如,可以给shell函数的参数添加前缀或后缀,与awk语句的参数进行区分。这样可以避免命名冲突,使参数用途明确。 2. 使用特殊字符或符号来标识参数的作用范围。例如,在awk语句中,可以使用'$'符号来表示参数,而在shell函数中,可以使用其他符号或字符。这样可以帮助区分参数的作用域,避免冲突。 3. 使用数组来传递参数。在shell函数中,可以将参数存储在一个数组中,然后将该数组作为参数传递给awk语句。这样可以避免参数冲突,并且可以更好地管理和使用多个参数。 4. 避免在函数中直接使用awk语句的参数。可以在函数中将awk语句的参数保存到一个变量中,然后在调用awk语句时使用该变量。这样可以避免直接使用awk语句的参数,减少冲突的可能性。 5. 使用函数或变量的本地作用域。在shell函数中,可以通过使用local关键字将参数和变量设置为本地作用域。这样可以确保参数和变量只在函数中有效,避免与其他变量发生冲突。 综上所述,通过给参数命名方式不同、使用特殊字符标识参数范围、使用数组传递参数、避免直接使用awk语句参数以及设置本地作用域等方法,可以有效避免shell函数的参数和函数awk语句的参数冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值