从命令行获取bash的确切输入

时间:2013-12-29 14:18:33

标签: 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/foo/foo" "bar/g' file

问题在于我无法回显“$ @”,因为bash会解释引号。我想要文字输入,而不必从文件中读取。

1 个答案:

答案 0 :(得分:1)

您可以使用ANSI-C引用:

bash filename $'sed \'s/foo/foo" "bar/g\' file'

请注意,您需要转义单引号。这会产生:

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

echo "$@"