在linux中,如何使用用户输入的变量值从一个shell脚本到另一个shell脚本?

在linux中,如何使用用户输入的变量值从一个shell脚本到另一个shell脚本?,shell,Shell,我有一个三个shell脚本,其中我必须使用用户输入的值计数,从script1.sh到script2.sh。如何使用从script1.sh到script2.sh trhough main.sh的用户输入值计数 scrip1.sh read -p 'Enter a number:' count 脚本2.sh echo "Count:$count" main.sh sleep 1 && ./script1.sh sleep 1 && ./script2.sh 如何

我有一个三个shell脚本,其中我必须使用用户输入的值计数,从script1.sh到script2.sh。如何使用从script1.sh到script2.sh trhough main.sh的用户输入值计数

scrip1.sh

read -p 'Enter a number:' count
脚本2.sh

echo "Count:$count"
main.sh

sleep 1 && ./script1.sh
sleep 1 && ./script2.sh
如何修改子shell中的全局变量

这是你真正的问题

简而言之,你不能!看

您希望main.sh知道您的变量$count,并由执行script1.sh并传递给子shell script2.sh读取的子shell修改

使用导出或将变量声明为全局变量时,可以将父main.sh中的变量传递给子级进行读取。例如

#!/usr/bin/env bash
# This is main.sh
export count=5
./script2.sh

#!/usr/bin/env bash
# This is script2.sh
echo "$count"
其运行方式如下:

$./main.sh
5
$./main.sh
5
$./main.sh
7
无法修改变量:

#!/usr/bin/env bash
# This is main.sh
export count=5
./script1.sh
./script2.sh

#!/usr/bin/env bash
# This is script1.sh
count=7
其运行方式如下:

$./main.sh
5
$./main.sh
5
$./main.sh
7
你能做什么

如果要修改父级中的变量,必须要求script1.sh通过/dev/stdout返回值,然后捕获它

然后你有两个选择:

将count声明为全局变量

将计数作为参数传递

其运行方式如下:

$./main.sh
5
$./main.sh
5
$./main.sh
7
另一种解决方案是利用来源:

执行打开新shell的脚本时,在新shell中键入命令,将输出复制回当前shell,然后关闭新shell。对环境的任何更改将仅在新shell中生效,并且在新shell关闭后将丢失

编写脚本源代码时,您正在当前shell中键入命令。对环境的任何更改都将生效并保留在当前shell中

资料来源:


我只想将count变量导出到script2.sh中,在这里我必须根据该变量做出不同的决定@kvantour@ARYA1992我修改了answerscript1.sh,不仅有count变量,还有更多的行和变量。我给出了一个例子。我还必须执行整个script1.sh,因为它做了一个特定的task1之后,我必须调用script2.sh来执行task2,在这里我必须使用用户在script1中输入的count变量来做决策。sh@kvantourPossible副本