Bash here document: перенаправление ввода вместо прямого ввода

Для начала, ожидая реальной строки значения $p :, обязательно заключайте $p в кавычки.

fname=$(sed 's/(.*//' <<< "$p" | awk '{ print $NF }') 

Также обратите внимание, sed 's/(.*//'соответствует концу строки.

f='(something) and more stuff';sed 's/(.*//' <<< "$f"

Результатом, конечно же, является пустая строка.

f='(something)-and more stuff';sed 's/([^)]*)//' <<< "$f"

Результаты в:-и многое другое

0
29.10.2019, 19:55
1 ответ

Здесь -doc — это всего лишь один синтаксис для передачи определенных входных данных на стандартный ввод программы. Но это не единственный. Вы также можете использовать:

  • труба:

    printf "a\n" | cat
    
  • здесь -строка:

    cat <<< "a"
    
  • процесс подстановки (как вы уже делали):

    cat < <(printf "a\n")
    

(Обратите внимание, что строка здесь -добавит новую строку в конец данной строки. Другие не будут, поэтому я добавил один вручную с помощью printf.)

Передача строк EOFв cat, вероятно, не очень полезна, это просто часть синтаксиса здесь -doc.

0
28.01.2020, 03:10

Теги

Похожие вопросы