簡體   English   中英

如何在 bash shell 中使用管道?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM