如何解决源代码和Linux脚本的./执行之间的区别
| csh:set a=0
echo \"a is $a\"
当我做./my_script.csh输出是:
a is
当我做源my_script.csh输出是:
a is 0
为什么会这样呢。据我所知./执行使用新的外壳。
解决方法
检查是否在当前shell中设置了变量“ a”:
set | grep \'^a=\'
请记住,一旦您将脚本源到当前的shell,
它所有的全局变量都存在,直到未设置或退出当前shell。
您可能要启动一个新的shell,提供脚本,结束退出shell以执行有效的测试。
我不知道您遇到的问题的背景,但是您可能希望导出一些关键变量,以使其在每个子流程中都有其副本。
,没错,。/ my_script.csh启动一个新的shell,并使用#!您应该在文件顶部具有选择要运行的外壳程序(在本例中为csh)。
源my_script.csh在当前shell中运行脚本。
如果脚本在例如bash shell中错误运行,则set a = 0并不是在bash中设置环境变量的语法,因此该代码将无法正常工作,因为您正在使用错误的外壳。
看看#!在文件的顶部。这是对的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。