我有代表订单数量的varibales
我想解析它并调用方法handleOrder
我尝试了但没有工作
#!/bin/ksh
ORDER_LIST=100,200,300
`echo $line |awk -F"," '{for(i=0;i<=NF;i++) HandleOrder printf $i}'`
HandleOrder
(
echo "My Order is $1"
}
预期结果:
My Order is 100
My Order is 200
My Order is 300
实际结果
Syntax Error
答案 0 :(得分:2)
您需要在awk脚本中定义HandleOrder
函数,以便可以在awk脚本中调用它。此外,您希望以1开始循环,这样就不会打印包含整行的变量$0
。类似的东西:
#!/bin/ksh
ORDER_LIST=100,200,300
echo $ORDER_LIST | awk -F"," '
function HandleOrder(order) { print "My Order is ", order }
{for(i=1;i<=NF;i++) { HandleOrder($i) }}
'
如果您希望将HandleOrder
作为shell脚本而不是awk函数,那么请使用以下内容:
#!/bin/ksh
ORDER_LIST=100,200,300
echo $ORDER_LIST | awk -F"," '
{for(i=1;i<=NF;i++) { system("HandleOrder.ksh " $i) }}
'
并创建一个名为HandleOrder.ksh
的shell脚本,其中包含:
#!/bin/ksh
echo "My Order is $1"
确保HandleOrder.ksh
设置为可执行且位于$PATH
。