如何使用重定向到bash脚本标准输入的文件?
$ script.sh < file_to_use_in_script
我需要在脚本中添加什么内容,以便我可以在此输入的变量中写入文件名,而不事先知道路径名。
FILENAME=$file_to_use_in_script
答案 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