首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当调用带有参数的脚本时,shell脚本中的源无法工作

当调用带有参数的脚本时,shell脚本中的源无法工作
EN

Stack Overflow用户
提问于 2013-08-05 16:09:30
回答 2查看 2.1K关注 0票数 0

我正在尝试编写一个shell脚本,它将为我启动Xilinx程序,但是源代码命令有问题。这是我的脚本xilinx

代码语言:javascript
运行
复制
#!/usr/bin/env bash
cd /home/sclukey/Xilinx
source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$@

如果我只调用xilinx,脚本将返回

代码语言:javascript
运行
复制
. /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命令的输出就会丢失,它只会返回

代码语言:javascript
运行
复制
/usr/local/bin/xilinx: line 4: ise: command not found

我认为这是因为当调用带有参数的脚本时,源命令没有运行。这是为什么,我怎么能修好它?

谢谢

编辑:我发现这是因为settings32.sh文件使用了$1参数,当调用带有参数的xilinx脚本时,这些参数也被传递给source命令,该命令破坏了settings32.sh脚本。那么,如何阻止参数传递给source命令呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-05 16:25:59

它看起来像是/opt/Xilinx/14.6/ISE_DS/settings32.sh或者source的脚本之一,它响应命令行参数并吞并它们。试着在搜索之前保存它们,然后删除它们:

代码语言:javascript
运行
复制
#!/usr/bin/env bash
args=$@
shift

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

$args
票数 0
EN

Stack Overflow用户

发布于 2013-08-05 16:16:19

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

代码语言:javascript
运行
复制
$ cd /home/sclukey/Xilinx
$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$ ise

脚本的响应表明路径中没有ise程序。我会检查一下ise在哪里,以及settings32.sh是否为它设置了路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18062765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档