shell - 如何在没有命令行参数的情况下将参数传递给子 shell(通过执行,而不是源代码)?

标签 shell parallel-processing subshell

例如,我有一个主shell程序main.sh,还有一个子shell程序sub.sh。我想将变量 var 传递给子 shell,但我不想使用命令行参数。示例代码如下:

#In main.sh
a=1
./sub.sh

#In sub.sh
echo $a

我想看输出:1

我知道这个问题很奇怪,但这个功能最适合我的需要。我无法获取 sub.sh,因为在实际程序中我有很多变量要传入...谢谢!

编辑:如果我在后台运行 sub.sh 需要 10 个小时,我想运行另一个 sub.sh 怎么办> 在另一个变量 b 的前台?

最佳答案

你只是有一个额外的换行符:

#In main.sh
a=1 ./sub.sh

这实际上与 1_CR 的答案相同,但演示了将值传递给 sub.sh 的环境而不是修改 sub.sh 的当前环境的技术> 继承。

由于这是环境的每个进程修改,您可以根据需要重复。

a=1 ./sub.sh &
a=3 b=9 ./sub.sh &

sub.sh 的每个实例都看到了不同的 a 值,第二个实例也看到了 b 的值。

关于shell - 如何在没有命令行参数的情况下将参数传递给子 shell(通过执行,而不是源代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599303/

相关文章:

php - 从其文件夹位置而不是调用者文件夹位置执行 shell 脚本?

C 拆分 CMD 参数

parallel-processing - 处理 CUDA 中的大型 switch 语句

c# - 将 Task 转换为 Task<Unit> 的最有效方法?

linux - 保留返回值并且不从子 shell 运行

linux - 将带引号的字符串传递给 ssh

linux - 根据条件在 Linux 中重命名文件名

Java 多线程类方法?

shell - 在脚本和子 shell 中捕获信号

linux - Bash 中 $() 和 () 的区别