How to pass the value of a variable to the stdin of a command?

后端 未结 9 578
無奈伤痛
無奈伤痛 2020-11-27 14:44

I\'m writing a shell script that should be somewhat secure i.e. does not pass secure data through parameters of commands and preferably does not use temporary files. How can

9条回答
  •  悲哀的现实
    2020-11-27 15:13

    Note that the 'echo "$var" | command operations mean that standard input is limited to the line(s) echoed. If you also want the terminal to be connected, then you'll need to be fancier:

    { echo "$var"; cat - ; } | command
    
    ( echo "$var"; cat -   ) | command
    

    This means that the first line(s) will be the contents of $var but the rest will come from cat reading its standard input. If the command does not do anything too fancy (try to turn on command line editing, or run like vim does) then it will be fine. Otherwise, you need to get really fancy - I think expect or one of its derivatives is likely to be appropriate.

    The command line notations are practically identical - but the second semi-colon is necessary with the braces whereas it is not with parentheses.

提交回复
热议问题