Я использую herestring для передачи строки (два входных значения с символами новой строки) в качестве стандартного ввода в исполняемый файл установщика. Например, выполнение установщика с двумя входными данными /var/tmp
и yes
#!/bin/bash
# run_installer.sh
./installer <<< $'/var/tmp\nyes\n'
Но мне нужно параметризовать входы.
e.g.
#!/bin/bash
# run_installer.sh
export INPUT1="$1"
export INPUT2="$2"
# does not work, it evaluates literally to: ./installer ${INPUT1} ${INPUT2}
./installer <<< $'${INPUT1}\n${INPUT2}\n'
Чтобы я мог выполнить это так:
./run_installer /var/tmp yes
Вопрос, отмеченный как дубликат, не отвечает на этот вопрос. Это похоже на концепцию, но достаточно отличается, чтобы оправдать собственный вопрос.
< <(printf "$1\n$2\n")
- person KamilCuk   schedule 31.01.2019$''
, который не является специфичным для строки синтаксисом. У вас была бы точно такая же проблема с f / e,var=$'${INPUT1}\n${INPUT2}\n'
- person Charles Duffy   schedule 31.01.2019$''
в bash, какое имя лучше подходит для вопроса? - person James Wierzba   schedule 31.01.2019$''
также известен как строки, подобные ANSI C, хотя, по общему признанию, это довольно полный рот. То же самое происходит и с обычными одинарными кавычками; это можно было бы почти обобщить на Как нужно ли использовать переменные в строках с одинарными кавычками?, которые охватывают необходимые детали (относительно возможности переключения между типами кавычек в одной строке). - person Charles Duffy   schedule 31.01.2019< <(printf '%s\n' "$1" "$2")
, который не будет пытаться обрабатывать значения внутри переменных, как если бы они были частью строки формата (с обратной косой чертой, знаками%
и т. д. небуквальными). - person Charles Duffy   schedule 01.02.2019