2015-10-11 34 views
0

我是bash编程的新手,并且为我的程序的这一部分努力工作。我知道如何使用位置参数来引用命令行的某些元素,但是,如果指定了某个文件,我只能得到它。如何使用标准输入位置参数,像这样:如何在Bash中使用标准输入的位置参数

cat test_file | stats -r 

在这种情况下,可以参考我的“0 $”统计,并以“$ 1”,但我怎么能指的是猫的test_file里面的部分-r?在上下文中,Stats是我的程序,它可以找到测试文件中数字的平均值和中位数。 “-r”表示该程序应该读程序时,在命令行中是这样写的每一行:

stats -r test_file 

我用这个代码表示-r

if [[ "${1:0:2}" == '-r' ]] 
    do stuff 
+1

_but我怎么可以参考'cat test_file'部分?_简答:你不能! –

+0

如果没有位置参数(您可以通过查看'$#'来判断),那么您应该从标准输入读取。这将适用于管道以及用户希望直接输入程序的情况。 – rici

+0

如果我需要将它用作函数的参数,我如何从标准输入读取数据?因此,使用位置参数我调用这样的函数:rows_stats $ 2其中$ 2是指文件名。我怎么能只用标准输入来做同样的事情? – user2466886

回答

-1

试试这个:stats -r "$(cat test_file)"

+0

以下是的,但是这是为了一个任务和分级明确尝试使用“猫test_file |统计 - r”,看看程序是否这样工作。 – user2466886

-1

答:随着人们说你不能在这种情况下使用位置参数唯一的选择是从标准输入,并在我的情况下,它存储在一个变量来读取传递给函数

在这里阅读以了解更多如何做到这一点:How to read mutliline input from stdin into variable and how to print one out in shell(sh,bash)?

+0

如何将stdin存储到变量中帮助您将它传递给期望文件名的函数? (如果你需要使用文件名来引用stdin,它是'/ dev/stdin'。) – rici

相关问题