Назад | Перейти на главную страницу

как выполнить среднюю функцию в Bash

Я пытаюсь разобрать текст строки в bash, который затем могу выбрать для выбора случая, но у меня самые большие проблемы, пытаясь понять, как это сделать. В VB я знаю, что это очень просто, как

someString = "Hey there"
Select Case Mid(someString,1,5)
 Case "Hey t" 'Do something
 Case "Go aw" 'Do something else
 Case 'Else
  'String is unrecognized
End Select 

Кажется, я не могу найти ничего, что показало бы, как я могу выполнять функцию манипулирования строками, которая эквивалентна функции Mid. Я использую sed, Я не верю, что могу использовать awk или cut поскольку я не пытаюсь обрезать строку по шаблону, но, конечно, в Unix это должно быть так же просто.

someString="Hey there"
case "${someString:0:5}" in
    "Hey t" ) echo Do something ;;
    "Go aw" ) echo Do something else ;;
    * )       echo unrecognized  ;;
 esac

Это также легко можно сделать с помощью if, elif, else. $ {SomeString: 0: 5} - это расширение параметра. Узнайте больше из этого раздела в руководстве по bash, а также из Грегс Баш FAQ # 73.

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

Я не уверен, что понимаю ваш вопрос, так как думаю, что "вырезать" будет работать так, как вы хотите.

someString="Hey there"

case `echo $someString | cut -c1-5` in
    "Hey t") echo Do something ;;
    "Go aw") echo Do something else ;;
    *) echo String is unrecognized ;;
esac