在bash中格式化stdin

Use*_*er1 21 bash

我有一个来自另一个程序的多行字符串,我想将其转换为SQL命令.我希望printf可以帮助我,但它似乎不起作用:

echo -e '1\n2\n3'|printf 'SELECT %s INTO MyTable'

我希望看到:

SELECT '1
2
3' INTO MyTable

但我得到了:

SELECT  INTO MyTable

如何让%s读取标准输入?

Jür*_*zel 33

使用xargsstdin转换为程序参数:

echo -n  -e '1\n2\n3' |xargs -0  printf 'SELECT %s INTO MyTable'
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 5

尝试一下:

printf_stdin() { local stdin; read -d '' -u 0 stdin; printf "$@" "$stdin"; }

echo -e '1\n2\n3' | printf_stdin 'SELECT %s INTO MyTable'
Run Code Online (Sandbox Code Playgroud)