pdu*_*ois 1 unix linux bash pipe
我有以下bash脚本,它将表格数据作为输入,获取第一行并垂直吐出它们:
#!/bin/bash
# my_script.sh
export LC_ALL=C
file=$1
head -n1 $file |
tr "\t" "\n" |
awk '{print $1 " " NR-1}'
Run Code Online (Sandbox Code Playgroud)
问题是我只能这样执行:
$ myscript.sh some_tab_file.txt
Run Code Online (Sandbox Code Playgroud)
我想要做的是在上述功能之上还允许你这样做:
$ cat some_tab_file.txt myscript.sh | myscript.sh
Run Code Online (Sandbox Code Playgroud)
即从管道输出中取出它.我怎样才能做到这一点?
我通常写道:
export LC_ALL=C
head -n1 "$@" |
tr "\t" "\n" |
awk '{print $1 " " NR-1}'
Run Code Online (Sandbox Code Playgroud)
这适用于任意数量的参数,如果没有则参数为none."$@"在这个和许多其他环境中使用很重要.有关可用于控制shell参数处理方式的许多不同符号的详细信息,请参阅有关特殊参数和shell参数扩展的Bash手册.通常,双引号是个好主意,特别是如果文件名可能包含空格.
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |