正如标题所说,我希望能够从子进程(通常是脚本)更改父进程(特别是 shell)中的环境变量。从/dev/pts/id试图key=value从子脚本导出的伪终端,如果可能的话,导出的变量必须以某种方式传递给父脚本?
echoingcmd > /proc/$$/fd/0不执行cmd,只在 shell 终端模拟器中查看命令,当然在 subshell 中使用$(cmd)而不是cmd执行,并且export不向父进程添加变量。
我更喜欢所有的工作都在孩子这边完成。
我在评论中被问到,我想要实现什么?这是一个普遍的问题,我正在尝试使用肯定的答案从(父)shell 执行(生成)的脚本中传递变量,以便用户可以从添加的变量中受益,而无需任何进一步的工作。比如我想用脚本安装一个应用程序,应用程序目录应该添加到父shell路径中。
我需要在 bash 循环内执行算术运算,如下所述
CYCLE?=3
COUNT=1
download_when_ready: ## Will try the download operations many times till it succeeds or it reaches 10 tries
while ! composer update $(bundle) 2> /dev/null && [[ $(COUNT) -lt 10 ]]; \
do \
COUNT=$$(( $(COUNT)+1 )); \
SLEEP=$$(( ($(COUNT) / $(CYCLE)) + ($(COUNT) % $(CYCLE)) )); \
echo "count $(COUNT)"; \
echo "cycle $(CYCLE)"; \
echo "sleep $(SLEEP)"; \
sleep $(SLEEP); \
done
Run Code Online (Sandbox Code Playgroud)
这永远不会停止并给出以下内容:
count 0
cycle 4
sleep 0
count 0
cycle 4
sleep …Run Code Online (Sandbox Code Playgroud)