2014-09-30 33 views
0

平台是AIX 7.1和HP-UX Itanium 11.31 Korn shell。我们的大部分脚本都在主配置文件中提供,以设置所需的环境变量。新的要求是从主配置文件中选择性地采购另一个配置文件。第二个配置文件需要接受参数。不幸的是,当我们输入第二个配置文件时,存储原始命令行参数的系统变量($ *)被覆盖。例如:在获取参数接受配置文件后恢复unix命令行参数

呼叫而不需要第二规格:./script my original parms 主配置文件不采购的第二轮廓。 $*包含my original parms。我们在这里很好。

调用具有第二轮廓的源:./script my second original parms 主简档源第二轮廓为:. ./secondProfile second profile parms $*包含second profile parms。呃哦。

因此,我们在主脚本调用的第二个版本中有效地丢失了my second original parms。有什么方法可以保存/恢复这些原始参数,或者在采购第二个配置文件之后能够通过其他方法引用它们?

+1

你能不只是分配'$ *'另一个变量:

要恢复参数的位置? – 2014-09-30 16:04:36

+0

并回想一下,在你的代码中的任何地方,用'set-arg1 arg2 ..'和现在的shell arg'$ 1'来重置'$ *'值将等于“arg1”等。祝你好运。 – shellter 2014-09-30 16:11:07

回答

-1

某处您需要存储参数。使用数组:

set -A params "[email protected]" 

它使用"[email protected]"而不是$*是很重要的 - 前者将保留任何论点空白。您拨打第二个脚本,然后使用该变量,而不是之前

set -- "${params[@]}" 
./script "[email protected]" 
+0

set -A params“$ @”dit不适用于我,但params =“$ @”起作用。 – zczhuohuo 2016-08-25 08:08:07

+0

你的壳是什么?' – 2016-08-25 11:43:44

+0

bash实际上...... – zczhuohuo 2016-08-25 13:20:09