gpt4 book ai didi

Perl 的菱形运算符 : can it be done in bash?

转载 作者:行者123 更新时间:2023-11-29 09:07:32 25 4
gpt4 key购买 nike

有没有一种惯用的方法可以在 bash 中模拟 Perl 的菱形运算符?有了钻石算子,

script.sh | ...

读取标准输入作为输入

script.sh file1 file2 | ...

读取 file1 和 file2 作为输入。

另一个约束是我想将 script.sh 中的标准输入用于除输入我自己的脚本之外的其他内容。下面的代码对上面的 file1 file2 ... 情况做了我想要的,但不是为 stdin 上提供的数据。

command - $@ <<EOF
some_code_for_first_argument_of_command_here
EOF

我更喜欢 Bash 解决方案,但任何 Unix shell 都可以。

编辑:为了澄清,这里是 script.sh 的内容:

#!/bin/bash
command - $@ <<EOF
some_code_for_first_argument_of_command_here
EOF

我希望它以菱形运算符在 Perl 中的工作方式工作,但它现在只处理文件名作为参数。

编辑 2:我不能做任何事情

cat XXX | command

因为命令的标准输入不是用户的数据。命令的标准输入是我在此处文档中的数据。我希望用户数据进入我脚本的标准输入,但它不能是我脚本中命令调用的标准输入。

最佳答案

当然,这是完全可行的:

#!/bin/bash
cat $@ | some_command_goes_here

然后,用户可以在不带参数(或“-”)的情况下调用您的脚本,以从标准输入或多个文件中读取所有这些文件。

如果你想处理这些文件的内容(比如,逐行),你可以这样做:

for line in $(cat $@); do
echo "I read: $line"
done

编辑:将 $* 更改为 $@ 以处理文件名中的空格,感谢有用的评论。

关于Perl 的菱形运算符 : can it be done in bash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735134/

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