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 中获取 每一行 执行一次脚本
该怎么设置 麻烦大神 求助 感激涕零
用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
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
请用英文逗号分隔每一行的每一列
#!/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"
直接用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替换成你的命令就可以了。
awk sed配合使用,效果很nice
直接用变量+上awk提取出来就对了。上面的大神都已经写出来了。可以借鉴下。