我有一个文件,我想写一个bash shell来做一些操作但是首先,我需要对它们进行排序并得到输入文件的前10行
我的代码是:
#!/bin/bash
pipe= "${1:-/dev/stdin}" > sort -k2 #----line 4
i=0
while [.....]&&[ $i -lt 10 ] do
....
....
i=$((i+1))
done < "$pipe" #----line 15
执行命令是:
cat inputfile | ./e4.sh
但我得到了许可:
./e4.sh: line 4: /dev/stdin: Permission denied
./e4.sh: line 15: : No such file or directory
从我的电脑我可以看到文件/ dev / stdin
root@CP:/dev# ls
block kmsg null pts shm stdin tty tty1 urandom
fd lxss ptmx random stderr stdout tty0 tty2 zero
如何正确地做到这一点。 我的意思是排序它并获得前10行。
答案 0 :(得分:0)
一般来说,一个命令
FOO=BAR BAZ
通过将环境变量FOO设置为值BAR来增强环境中的命令BAZ。
在你的情况下,我们有类似的东西。命令
pipe= "${1-/dev/stdin}" > sort -k2
将环境变量命名管道设置为空字符串,然后调用存储在$ 1中的程序。如果未设置$ 1,则调用/ dev / stdin。在你的情况下,没有设置$ 1,所以bash尝试执行/ dev / stdin,当然它不能。