在Linux中重定向输入

时间:2012-11-30 03:41:20

标签: linux redirect terminal

我有2个文件:test和input1。 以下是我的“测试”文件:

echo $1 $2

更改输出的工作方式与我在终端中写入时相同:

./test foo bar > input1 

将字符串“foo bar”写入input1。 然而,当我在终端写作时:

./test < input1

终端中打印的所有内容都是跳过的行。

为什么“foo bar”没有打印到终端的任何想法?

3 个答案:

答案 0 :(得分:0)

这是因为测试不回显标准输入,它回应命令参数

$1$2代表命令行上的第一个和第二个参数,它们是测试回响的内容。

小于(“&lt;”)符号重定向标准输入(默认情况下,交互式shell中的控制台),并且您将重定向发送到测试的标准输入来自 input1 ,但测试甚至不查看标准输入,它只查看命令行参数。

为了使shell的行为更符合您的预期,您必须获取 input1 的内容并将其放入传递给 test 的命令参数中。 / p>

也许这就是你的意图:

./test $(cat input1)

答案 1 :(得分:0)

要做你想做的事,你应该这样做:

./test `cat input1`

这样,input1的内容将作为参数传递给命令,而不是标准输入。

假设input1的内容是:

a b c

这与调用你的脚本一样:

./test a b c

在您的脚本中,您将收到a,b和c作为变量:

$# = 3
$1 = 'a'
$2 = 'b'
$3 = 'c'

但是,想象一下,您希望在脚本中使用input1作为标准输入。所以你可以像这样调用你的脚本:

./test < input1

并在脚本内部,假设您要将input1的内容传递给grep。你会做这样的事情:

grep b <1 

这将在input1文件中搜索字符串'b'。

要查看更多示例,请查看此页面: http://www.mathinfo.u-picardie.fr/asch/f/MeCS/courseware/users/help/general/unix/redirection.html

答案 2 :(得分:0)

输入可以在bash中重定向,如下所示(我还是Linux新手):

cat <& 0

此处,0代表Console Input,而1代表Console Output2代表Console Error Output