【发布时间】:2021-12-12 06:03:45
【问题描述】:
我试图创建一个函数,将通过管道输入的所有文本都放入一个变量中。我遇到了一个问题。这是一个摘要,因此可以正常工作(打印“1”)。
#!/bin/bash
jkl(){
i=1
}
jkl
echo $i
但不是这个。
#!/bin/bash
jkl(){
i=1
}
echo hel | jkl
echo $i
这是怎么回事?
【问题讨论】:
-
为什么说第一个有效?您没有将任何文本传送到
jkl。 -
我想我设法弄清楚了你在说什么,即使你没有很好地解释它。我怀疑第二个示例中的
jkl函数无法成功设置i变量,因为它可能在子shell 中运行。 stackoverflow.com/questions/23564995/… -
使用一堆运行命令来同步
-
以下是关于在管道中设置变量的一些其他问答:"assign a value to a variable in a loop" 和 "Local variables after loop exit"。这些是关于循环而不是函数,但这根本不重要。重要的是它们在管道中,因此在子外壳中运行。
-
这也是BashFAQ #24。
标签: bash