Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从shellscript获取变量值的步骤_Linux_Shell_Unix_Aix - Fatal编程技术网

Linux 从shellscript获取变量值的步骤

Linux 从shellscript获取变量值的步骤,linux,shell,unix,aix,Linux,Shell,Unix,Aix,我正在创建一些shell脚本。 script1在method1中有一个if条件 前- 我想在script2中使用var的值 script2 methodx() { foo=$var if [[ $foo = [Yy] ]] then ..... ..... elif [[ $foo = [Nn] ]] then ..... ..... else ..... fi } 这两个脚本都在另一个脚本中执行 script3 methodA

我正在创建一些shell脚本。
script1
在method1中有一个if条件 前-

我想在script2中使用var的值

script2
methodx()
{
 foo=$var
 if [[ $foo = [Yy] ]]
 then
     .....
     .....
 elif [[ $foo = [Nn] ]]
 then
     .....
     .....
 else
     .....
 fi
}
这两个脚本都在另一个脚本中执行

script3

methodA()
{
./script1
....
....
....
}

methodB()
{
 ./script2
 ....
....
....
}

如何从
script1
script2

获取var的值您总是需要
[[
]
内部的空间。另外,要测试一个模式,您可以使用
[[$foo=~[Nn]]]


通常,如果要将脚本打印的文本存储到标准输出,则使用
varname=$(命令参数)

看起来需要在script3的shell中定义script1中的
method1
和script2中的
methodx
。为此,在script3中,您需要
源脚本1
源脚本2
,而不是执行它们。要实现这一点,您可能需要对代码进行一些重构,正如我在script1和script3中看到的method1所定义的那样。

正如l0b0所说,在methodA中,而不仅仅是./script1,您可以:

foo=$( ./script1 )
如果script1的输出有空格,则可能需要在其周围加引号:

foo="$( ./script1 )"
另外,为了安全起见,在method1之外声明foo,使其为全局的(这是默认设置,但看到声明的内容总是很好的。因此,在script3的顶部执行以下操作:

typeset foo
如果您可以将script1和script2合并到script3中,这将更快,而且可能更易于维护,但仍有许多次需要使用$(…)构造。在过去,这种用法将被重新使用:

foo=` ./script1 `

该语法仍然受支持。

我已经编辑了上面的代码,知道它是脚本1的method1和脚本3的methodA。您能否给出一个例子,说明如何准确地获取脚本1和脚本2的源代码,正如我在回答中所写的那样:将
/script1
更改为
源代码脚本1
。但是我如何才能获得从'script1'到'script2'调用的var值代码< <代码> >设置<代码> var >代码>你能举个例子吗?我是新的shell脚本。谢谢你,我会考虑的,但是你会对我的查询有什么帮助吗?
foo=` ./script1 `