【发布时间】:2018-03-20 23:03:22
【问题描述】:
有没有办法在 bash 函数中使用 STDIN?
例如
# echo "somevar = (100)" >> test.txt
# grep -Eo "\([[:digit:]]+\)$" test.txt
(100)
所以没关系,我有我的号码,接下来我想删除括号。 我所做的是:
string=`grep -Eo "\([[:digit:]]+\)$" test.txt`; echo ${string:1:-1}
100
所以我的问题解决了,但是我花了很长时间做的是:
grep -Eo "\([[:digit:]]+\)$" test.txt | echo ${$1:1:-1}
grep -Eo "\([[:digit:]]+\)$" test.txt | ${$1:1:-1}
grep -Eo "\([[:digit:]]+\)$" test.txt | xargs echo ${:1:-1}
grep -Eo "\([[:digit:]]+\)$" test.txt | xargs -I 's' echo ${s:1:-1}
等等,等等……这些都不起作用。
假设有可能,我如何在 bash 命令中使用管道输入值?
【问题讨论】:
-
不清楚你打算写的语法是什么/意思。
-
...也就是说,关于读取输入流以供 shell 本机使用的一般性讨论,请参阅 BashFAQ #1 -- 和 BashFAQ #24 讨论一个常见的警告。
-
我想知道我是否可以使用管道而不是将其存储在变量中来实现与工作示例相同的效果。尽管您指向 BashFAQ 的链接似乎回答了我的问题。
标签: bash command-line pipe