Зауважте, що " echo "$var" | command
операції означають, що стандартне введення обмежено рядками, що відлунюються". Якщо ви також хочете, щоб термінал був підключений, вам потрібно буде бути більш прихильним:
{ echo "$var"; cat - ; } | command
( echo "$var"; cat - ) | command
Це означає, що перший рядок буде вмістом, $var
а решта буде надходити з cat
читання його стандартного вводу. Якщо команда не робить нічого надто фантазійного (спробуйте увімкнути редагування командного рядка або запустити так, як vim
це робиться), то це буде добре. Інакше вам потрібно по-справжньому пофантазувати - я думаю, expect
чи один із його похідних, ймовірно, буде доречним.
Позначення командного рядка практично ідентичні - але друге напівкрапка є необхідною для дужок, тоді як це не з дужками.
$PATH
? Так щоcat
можна замінити/bin/cat "$@" | tee /attacker/can/read/this/file