gpt4 book ai didi

linux - 如何在 bash shell 中使用管道?

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:54 25 4
gpt4 key购买 nike

我有一个文件,我想编写一个 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 ,当然它不能。

关于linux - 如何在 bash shell 中使用管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42061677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com