使用参数调用脚本时,shell脚本中的源不起作用

时间:2013-08-05 16:09:30

标签: bash shell

我正在尝试编写一个可以为我启动Xilinx程序的shell脚本,但是我遇到了source命令的问题。这是我的脚本xilinx

#!/usr/bin/env bash
cd /home/sclukey/Xilinx
source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$@

如果我只是致电xilinx,则脚本会返回

. /opt/Xilinx/14.6/ISE_DS/common/.settings32.sh /opt/Xilinx/14.6/ISE_DS/common
. /opt/Xilinx/14.6/ISE_DS/EDK/.settings32.sh /opt/Xilinx/14.6/ISE_DS/EDK
. /opt/Xilinx/14.6/ISE_DS/PlanAhead/.settings32.sh /opt/Xilinx/14.6/ISE_DS/PlanAhead
. /opt/Xilinx/14.6/ISE_DS/ISE/.settings32.sh /opt/Xilinx/14.6/ISE_DS/ISE

但是如果我运行xilinx ise那么source命令的输出就会丢失,只会返回

/usr/local/bin/xilinx: line 4: ise: command not found

我认为这是因为使用参数调用脚本时源命令未运行。为什么这样,我该如何解决?

由于

编辑: 我发现这是因为settings32.sh文件使用$1参数,并且当使用参数调用xilinx脚本时,这些参数也会传递给source命令这打破了settings32.sh脚本。那么如何才能阻止参数传递给source命令?

2 个答案:

答案 0 :(得分:0)

如果从命令行输入xilinx ise,则使用脚本自动执行以下命令:

$ cd /home/sclukey/Xilinx
$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$ ise

脚本的响应表明路径中没有ise程序。我会检查ise的位置,以及settings32.sh是否设置了路径。

答案 1 :(得分:0)

似乎/opt/Xilinx/14.6/ISE_DS/settings32.sh或其中一个脚本source响应命令行参数并吞下它们。在采购之前尝试保存它们,然后擦拭它们:

#!/usr/bin/env bash
args=$@
shift

cd /home/sclukey/Xilinx
source /opt/Xilinx/14.6/ISE_DS/settings32.sh

$args