当前位置: 技术问答>linux和unix
shell脚本问题 关于父脚本和子脚本的问题
来源: 互联网 发布时间:2016-12-04
本文导语: 本帖最后由 ly309431053 于 2011-06-03 10:13:16 编辑 有两个shell脚本,假设sh01.sh,sh02.sh,其中sh02.sh的脚本如下: sh02.sh脚本 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH echo "The first parameter:$1" echo "T...
sh02.sh脚本
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
echo "The first parameter:$1"
echo "The second parameter:$2"
sh01.sh脚本
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
. ./sh01 temp1 temp2
#为什么这种写法. ./sh01 temp1 temp2
#temp1,temp2传不进sh02里?
#如果改为./sh01 temp1 temp2,参数能传进去,
#那么. ./ 和./是什么区别呢?
#如果我必须要写成. ./sh01这种形式,
#那么我的参数怎么传进去
#(#在我现实程序中,必要要这样做,
#因为sh01要用到sh02的一些变量信息)?
echo "The first parameter:$0"
echo "The second parameter:$1"
exit 0
谢谢各位能给一些解惑!
|
. filename [arguments]
source filename [arguments]
读取并在当前 shell 环境中执行 filename 中的命令,返回 filename 中最后一个命令的返回状态。如果 filename 中不包含斜杠 (slash),系统将在 PATH 中查找包含 filename 的目录。在 PATH 中搜索的文件不必是可执行的。 如果 bash
不是运行于 posix mode,当 PATH 中找不到文件时会在当前目录搜索。如果 shopt 内建命令的 sourcepath 选项被关闭, PATH 将不会被搜索。如果有任何 arguments ,它们成为 filename 的位置参数 (positional parameters),否则
位置参数不发生变化。 返回状态是脚本中最后一个命令退出时的状态。 没有执行命令则返回0,没有找到或不能读取 filename 时返回false。
source filename [arguments]
读取并在当前 shell 环境中执行 filename 中的命令,返回 filename 中最后一个命令的返回状态。如果 filename 中不包含斜杠 (slash),系统将在 PATH 中查找包含 filename 的目录。在 PATH 中搜索的文件不必是可执行的。 如果 bash
不是运行于 posix mode,当 PATH 中找不到文件时会在当前目录搜索。如果 shopt 内建命令的 sourcepath 选项被关闭, PATH 将不会被搜索。如果有任何 arguments ,它们成为 filename 的位置参数 (positional parameters),否则
位置参数不发生变化。 返回状态是脚本中最后一个命令退出时的状态。 没有执行命令则返回0,没有找到或不能读取 filename 时返回false。
|
用. shell.sh 的方式执行就是在当前的shell环境中执行
否则,被执行脚本中对环境的修改不会影响父环境
否则,被执行脚本中对环境的修改不会影响父环境