如何从命令行检索bash的确切输入?

如何从命令行检索bash的确切输入?,bash,shell,unix,io,Bash,Shell,Unix,Io,如何让bash从命令行读取输入?我希望保留准确的输入,因此如果有引号,我希望保留它们。我可以通过使用egrep读取文件,然后对输入进行消毒来完成我想要做的事情,如下所示: egrep '/.*/' filename | sed 's/\(.*\)['"'"']\(.*\) \(.*\)['"'"']\(.*\)/\1'"\'"'\2" "\3'"\'"'\4/g' “filename”包含此行 sed 's/foo/foo bar/g' file 这为我提供了所需的输出: sed 's/fo

如何让bash从命令行读取输入?我希望保留准确的输入,因此如果有引号,我希望保留它们。我可以通过使用egrep读取文件,然后对输入进行消毒来完成我想要做的事情,如下所示:

egrep '/.*/' filename |
sed 's/\(.*\)['"'"']\(.*\) \(.*\)['"'"']\(.*\)/\1'"\'"'\2" "\3'"\'"'\4/g'
“filename”包含此行

sed 's/foo/foo bar/g' file
这为我提供了所需的输出:

sed 's/foo/foo" "bar/g' file

这里的问题是我不能回显“$@”,因为bash解释引号。我希望文字输入不必从文件中读取。

您可以使用ANSI-C引用:

bash filename $'sed \'s/foo/foo" "bar/g\' file'
请注意,您需要转义单引号。这将产生:

sed 's/foo/foo" "bar/g' file
一言以蔽之

echo "$@"

有趣的是,但是是否可以从脚本本身中检索文字输入?@JonPoler如果您提到您试图完成的内容,可能会有所帮助。我只是好奇是否可以在内部完成相同的事情。谢谢我不知道ANSI-C引用。在查看内部解析参数后,我认为不值得麻烦。谢谢你!