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的嵌入命令
原帖由 "zhangjoto" 发表:
嗯,,,,,我觉得网中兄说得有道理。
不过我对exec没太多了解。。。。。。。。
不如,寫兩個 shell script 來理解吧?
$ vi 1.sh
#!/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
#!/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 抓進來跑...)
阅读(614) | 评论(0) | 转发(0) |