如何使用重定向到bash脚本标准输入的文件?

时间:2014-12-10 20:20:07

标签: bash shell scripting

如何使用重定向到bash脚本标准输入的文件?

$ script.sh  < file_to_use_in_script

我需要在脚本中添加什么内容,以便我可以在此输入的变量中写入文件名,而不事先知道路径名。

FILENAME=$file_to_use_in_script

2 个答案:

答案 0 :(得分:1)

您可以使用文件名/dev/stdin。确保只读一次。

$ cat myscript                                                               
#!/bin/bash                                                                  
file=${1:-/dev/stdin}                                                        
echo "Reading from $file"                                                    
nl "$file"                                                                   

$ cat myfile                                                                 
hello world                                                                  

$ ./myscript myfile                                                          
Reading from myfile                                                          
     1  hello world                                                          

$ ./myscript < myfile                                                        
Reading from /dev/stdin                                                      
     1  hello world                                                          

$ echo "something" | ./myscript                                              
Reading from /dev/stdin                                                      
     1  something         

答案 1 :(得分:1)

我建议将文件名作为参数传递,你显然知道它

echo "name $1"
while read line
do
    echo $line
done

然后:

./test.sh foo/bar.txt < foo/bar.txt

给出

name foo/bar.txt
1
2
3

如果foo / bar.txt包含 1 2 3