Вам необходимо определить функцию HandleOrder
внутри скрипта awk, чтобы ее можно было вызывать в скрипте 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
в качестве сценария оболочки вместо функции 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
содержащий:
#!/bin/ksh
echo "My Order is $1"
Убедитесь, что HandleOrder.ksh
установлен как исполняемый и находится в $PATH
.