Команда подстроки не работает в Solaris kshell

Я пытаюсь использовать следующую команду для извлечения подстроки из строки:

propertyPath=$(echo $path|awk '{print substr($0,3,$index)}')

Однако команда не получает значение переменной $index и, следовательно, не возвращает допустимую подстроку.


person Archit Sharma    schedule 31.08.2015    source источник


Ответы (3)


Это будет работать:

propertyPath=$(echo $path|awk '{print substr($0,3,'$index')}')

or

propertyPath=$(echo $path|awk -v index=$index '{print substr($0,3,index)}')
person pynexj    schedule 31.08.2015

propertyPath=$(echo $path|awk "{print substr(\$0,1,$index)}")

person Archit Sharma    schedule 31.08.2015

Одинарные кавычки говорят оболочке не расширять значения, поэтому вам придется использовать двойные кавычки вокруг вашей команды awk. Однако, когда вы это сделаете, вам придется экранировать $ для переменных, которые вы не хотите расширять раньше.

person Eric Renouf    schedule 31.08.2015
comment
это ты примерно имеешь в виду? propertyPath=$(echo $path|awk {print substr(/$0,3,$index)}) - person Archit Sharma; 31.08.2015