shell 十三問?SHELL 基础十二篇

637阅读 0评论2008-10-16 xiaoone
分类:LINUX

  SHELL 基础十二篇
 
$ str=                # 設為 null  此处经设变量为null
        $ var=${str=expr}        # 定義 var ,而不是str str在上面已经定义,说明不为unset 不会影响str的值为null的结果

        $ echo $var
       
        $ echo $str
       
        $ unset str        # 取消   没有定义str
        $ var=${str=expr}        # 定義 var  而已设定str
        $ echo $var
        expr
        $ echo $str
        expr
 ++++++++++
 str=a
    var=${str=exprt}
     echo $var
    a
echo $str
    a
 
 
【转贴】shell的嵌入命令



QUOTE:
原帖由 "zhangjoto" 发表:
嗯,,,,,我觉得网中兄说得有道理。
不过我对exec没太多了解。。。。。。。。

不如,寫兩個 shell script 來理解吧?

$ vi 1.sh

CODE:
#!/bin/bash
A=B
echo \$A in $0 is $A
./2.sh
#exec ./2.sh
#. ./2.sh
echo \$A in $0 is $A

$ vi 2.sh

CODE
#!/bin/bash
A=C
echo \$A in $0 is $A

$ chmod a+x [12].sh
$ ./1.sh

測試時,請分別將 1.sh 如下三行作如下修改:
1) 用 fork
./2.sh
#exec ./2.sh
#. ./2.sh

2) 用 exec
#./2.sh
exec ./2.sh
#. ./2.sh

3) 用 source
#./2.sh
#exec ./2.sh
. ./2.sh

然後,思考一下:
1) 為何第三行仍是 B 值?
2) 為何看不到第三行了?(tips: exec 會終止當前 shell 哦)
3) 為何第三行的值是 C 而不是 B ?又為何第二行的 $0 是 1.sh 而非 2.sh ? (tips:source 是將 code 抓進來跑...)
上一篇:TCP握手协议
下一篇:简简单单讲map FW