Захват строки и печать следующих символов. - PullRequest
0 голосов
/ 08 декабря 2018

Я пробовал несколько вариантов, но это не работает в моем случае.Мое требование ... Предположим, у меня есть параметр в файле, и я хотел получить подробности, как показано ниже, и запустить скрипт оболочки (ksh).

PARAMETR=aname1:7,aname2:5

Параметр содержит 2 значения, разделенных запятой, и каждое значение, разделенное двоеточием.

Итак, вы хотите обработать ее, как если бы строка соответствовала aname1, а затем вывести обе переменные $v1=aname1 и $v2=7.То же самое относится и к другому значению, если строка ищется как aname2, тогда $v1=aname2 и $v2=5.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Сначала разбейте строку на два набора, а затем обработайте каждый набор.

echo "${PARAMETR}" | tr "," "\n" | while IFS=: read -r v1 v2; do
  echo "v1=$v1 and v2=$v2"
  done

Результат:

v1=aname1 and v2=7
v1=aname2 and v2=5
0 голосов
/ 13 декабря 2018

Это будет делать то, что вы просите

    #!/bin/ksh

    typeset -A valueArray

    PARAMETR=aname1:7,aname2:5

    paramArray=(${PARAMETR//,/ })

    for ((i=0;i<=${#paramArray[@]};i++)); do
            valueArray[${paramArray[$i]%:*}]=${paramArray[$i]#*:}
    done

    for j in ${!valueArray[@]}; do
            print "$j = ${valueArray[$j]}"
    done

Надеюсь, что это может помочь

...