[英]how to use pipeline in bash shell?
我有一個文件,我想寫一個 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 行。
一般來說,一個命令
FOO=BAR BAZ
在通過將環境變量 FOO 設置為值 BAR 而增強的環境中執行命令 BAZ。
在你的情況下,我們有類似的東西。 命令
pipe= "${1-/dev/stdin}" > sort -k2
將環境變量命名管道設置為空字符串,然后調用存儲在 $1 中的程序。 如果未設置 $1,它會調用 /dev/stdin。 在您的情況下,未設置 $1,因此 bash 嘗試執行 /dev/stdin,這當然不能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.