hipnos
2015-05-19 05:43
采纳率: 100%
浏览 4.0k

shell脚本里的命令加参数 参数 是从另一个文件中取得 怎么设置

test.sh如下
#!/bin/bash
usr/local/bin/ipmitest -I lanplus -H 10.18.32.80 -U root -P password -e sol active

arg_conf 如下
10.18.32.90 root password
10.18.32.100 admin admin
10.18.32.110 test password

脚本里的命令的 ip user pawword 从arg_conf 中获取 每一行 执行一次脚本

该怎么设置 麻烦大神 求助 感激涕零

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • hipnos 2015-05-20 01:40
    已采纳

    用awk 可以很简单
    #!/bin/bash
    cat /xxx/arg_conf | while read LINE
    do
    eval $(echo $LINE | awk '{print "IP="$1";USER=$2";PWD="$3""}')
    usr/local/bin/ipmitest -I lanplus -H $IP -U $USER -P $PWD -e sol active

    done

    点赞 评论
  • iam_yt 2015-05-19 05:57
    点赞 评论
  • 冰冻火山 2015-05-19 06:13
     cat /root/xxx/xxx/arg_conf | while read _line
        do
            if [ -z "${_line}" ]; then
                echo '--->empty line, ignored...'
                continue
            fi
    
            if [ "${_line:0:1}" == '#' ]; then
                echo "--->comment line, ignored..., ${_line}"
                continue
            fi
    
            #parse line
            _H="`echo $_line | cut -d , -f 1`"
            _U="`echo $_line | cut -d , -f 2`"
            _P="`echo $_line | cut -d , -f 3`"
    
            _sh="usr/local/bin/ipmitest -I lanplus -H ${_H} -U ${_U} -P ${_P} -e sol active"
            echo "--->${_sh}"
    
            #execute sh command
            `${_sh}`
        done
    
    点赞 评论
  • 冰冻火山 2015-05-19 06:14

    请用英文逗号分隔每一行的每一列

    点赞 评论
  • chimmuchiu 2015-05-19 06:14

    #!/bin/bash
    while read ip user password
    do
    usr/local/bin/ipmitest -I lanplus -H $ip -U $user -P $password -e sol active
    done < "arg_conf"

    点赞 评论
  • nswcfd 2015-05-21 05:25

    直接用awk就可以了,没有必要是bash+awk的混合体。

    例如
    printf "1 2 3\n4 5 6\n" | awk '{ cmd="echo -H " $1 " -U " $2 " -P " $3 ; print cmd; system(cmd); }'

    把cmd替换成你的命令就可以了。

    点赞 评论
  • 一枪尽骚丶魂 2015-05-23 07:12

    awk sed配合使用,效果很nice

    点赞 评论
  • qq55361743 2015-05-26 09:11

    直接用变量+上awk提取出来就对了。上面的大神都已经写出来了。可以借鉴下。

    点赞 评论

相关推荐 更多相似问题