20得票5回答
如何在子shell中激活conda环境?

我写了一个Python程序。如果我有这样的shebang:#!/usr/bin/python 然后我使用以下命令使文件可执行:$ chmod 755 program.py 我可以这样运行程序:$ ./program.py 问题在这里。我使用conda虚拟环境。当我像上面那样运行程序时,系统会创...

19得票4回答
为什么要避免使用子shell?

我在Stack Overflow上看到很多答案和评论都提到避免子shell。 有时会给出功能原因(最常见的是可能需要在子shell之外读取从中分配的变量), 但在其他情况下,避免似乎被视为一个目标。 例如: 合并TSV文件的两列 建议使用{ ... ; } | ...而不是 ( ... )...

17得票4回答
通过管道获取子shell的退出代码

我怎样能够从子shell进程中获取wget的退出码? 所以,主要问题是$?等于0。在哪里可以找到$?=8?$> OUT=$( wget -q "http://budueba.com/net" | tee -a "file.txt" ); echo "$?" 0 实际上,没有使用tee也可...

16得票3回答
为什么在没有 -t 选项的情况下 ssh 等待我的子 shell,而使用 -t 选项时会杀死它们?

我有一个名为start.sh的bash脚本,内容如下: for thing in foo bar; do { background_processor $thing cleanup_on_exit $thing } & done 这...

15得票5回答
如何在Bash中找到下一个可用的文件描述符?

如何在Bash中判断文件描述符是否正在使用?例如,如果我有一个读取、写入和关闭fd 3的脚本。exec 3< <(some command here) ... cat <&3 exec 3>&- 如何最好地确保我的脚本不会干扰在我脚本运行之前可能已经设置...

14得票2回答
管道符号左侧是子shell吗?

编辑: 我下面关于 sed 's@^@ @' <(f1) 的评论是不正确的。虽然$BASH_SUBSHELL表示我们与启动程序在同一级别,但变量在主脚本中丢失了。 根据Gordon的答案,我测试了f1 > >(sed 's@^@ @'),似乎可以正确地工作。...

13得票4回答
从管道中读取的while read循环后变量被重置

initiate () { read -p "Location(s) to look for .bsp files in? " loc find $loc -name "*.bsp" | while read do if [ -f "$loc.bz2" ] then ...

13得票2回答
在管道中读取变量时会发生什么?

echo hello | read str echo $str 这个read命令是在管道之后执行的,这意味着echo输出的内容被读入到str中 - 但由于它在管道后面,str的内容现在在一个子shell中,父shell无法读取。 str的内容会发生什么? 管道是否创建了一个子shell,然后一...

12得票1回答
子Shell的IO重定向

假设有一个文件"foo.txt",它是从以下内容创建的: $ seq 1 10 > "foo.txt" 我试图读取文件的第一行和最后一行,我开始通过将文件重定向到子shell来实现,以便命令列表按顺序消耗文件 -- 每个命令从上一个命令离开的地方开始消耗输入,我猜想: $ (he...

11得票3回答
一个Shell函数会在子Shell中运行吗?

我正在试图解决一个问题,我认为你不能将打开的db2连接传递给子shell。 我的代码组织如下: 驱动脚本(在my_driver.sh中)# foo.sh defines baz() bar(), which use a db2 connection # Also the "$para...