我有以下结构:
1.sh
2.sh
3.sh
所有这些脚本都在All .sh
中 1.sh
取变量(假设…回答)从用户(输入),并在1.sh脚本中使用它。
read -p 'Answer is : ' answer
所有我想要的是导出或导入变量答案从1.sh到2.sh和3.sh。
您有两个选择:
-
让
1.sh
输出$answer
:echo "$answer"
的值,并将其捕获在一个变量中,然后将其作为参数传递给2.sh
和3.sh
:answer=$(1.sh) 2.sh "$answer" 3.sh "$answer"
-
不执行脚本,而是将它们源化,以便它们由当前shell执行,而不是在新进程中执行。然后,
1.sh
中设置的任何参数将对2.sh
和3.sh
可用。source 1.sh # sets a value for $answer source 2.sh source 3.sh
一个小小的变化是在
1.sh
内运行export answer
;这样做的结果是,您不必提供其他两个脚本的源代码:source 1.sh 2.sh # answer is inherited from the environment 3.sh # answer is inherited from the environment