shell 编程笔记 (五)

第十一课 $* $@ 的区别

       (1)$*将所有的命令行所有参数视为单个字符串,等同于”$1$2$3”

         (2)$@将命令行每个参数视为单独的字符串,等同于”$1”/”$2”/”$3”。这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。

         示例:

         #set  -- “I am” handsome oldboy. 

         #echo $#

         3

         #for i in $*;do echo $i;done   #==>循环打印这些参数,用$*,无引号

         I

         am

         handsome

         oldboy.

         #for i in $@;do echo $i;done    #==>在没有引号的情况下,这里的结果$*和$@是一样的

         I

         am

         handsome

         oldboy.

         #for i;do echo $i;done    #==>去掉in变量列表,相当于in “$@”

         I am

         handsome

         oldboy.

         #for i in “$@”;do echo $i;done #==>在有双引号的情况下,参数里引号内内容当做一个参数输出了,这才真正符合我们传入的参数需求,set -- “I am” handsome oldboy.

I am

handsome

oldboy.

 

         #for I in “$*”;do echo $i;done  #==>加了双引号,$*表示一个字符串

         I am handsome oldboy.

         #shift  #==>用shift去掉第一个参数

         #echo $#

         2

        

#for i in “$@”;do echo $i;done  #==>再次打印只剩后面两个参数了

handsome

oldboy.

# for i in “$*”;do echo $i;done

handsome oldboy.

#for i;do ehco $i;done

handsome

oldboy.

Set和eval的使用案例

http://oldboy.blog.51cto.com/2561410/1175971

第十二课 bash内部变量

有些内部命令在目录列表时是看不见的,它们由shell本身提供,常用的内部命令:

echo,eval,exec,export,readonly,read,shift,wait,exit和点(.)

 

echo变量名表

         将变量名表指定的变量显示到标准输出。

evalargs

         读入参数args,并将它们组合成一个新的命令,然后执行。

exec

         当shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的shell)就终止了,所以shell程序中exec后面的语句将不再被执行。

export 变量名=value

         shell可以用export把它的变量向下带入子shell,从而让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父shell。

readonly 变量名

         从标准输入读字符串,传给指定变量

         可以在函数中用local变量名的方式申明局部变量

shift 语句

         shift语句按如下方式重新命名所有的位置参数变量,即$2成为 $1,$3 成为$2…在程序中每使用一次shift语句,都使所有的位置参数一次向左移动一个位置,并使位置参数$#减1,直到减到0为止。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值