shell学习之$@ 与 $* 差在哪?
来源:互联网 发布:小学题库软件 编辑:程序博客网 时间:2024/05/17 06:05
要说 $@ 与 $* 之前,需得先从 shell script 的 positional parameter 谈起...
我们都已经知道变量(variable)是如何定义及替换的,这个不用再多讲了。
但是,我们还需要知道有些变量是 shell 内定的,且其名称是我们不能随意修改的,
其中就有 positional parameter 在内。在 shell script 中,我们可用 $0, $1, $2, $3 ... 这样的变量分别提取命令行中的参数,
如ls -l ls为$0, -l为$1
首先是 $# :它可抓出 positional parameter 的数量。
以前面的 my.sh p1 "p2 p3" 为例:由于 p2 与 p3 之间的 IFS 是在 soft quote 中,因此 $# 可得到 2 的值
接下来就是 $@ 与 $* :
精确来讲,两者只有在 soft quote 中才有差异,否则,都表示"全部参数"( $0 除外)。
举例来说好了:若在 command line 上跑 my.sh p1 "p2 p3" p4 的话,
不管是 $@ 还是 $* ,都可得到 p1 p2 p3 p4 就是了。
但是,如果置于 soft quote 中的话:
"$@" 则可得到 "p1" "p2 p3" "p4" 这三个不同的词段(word);
"$*" 则可得到 "p1 p2 p3 p4" 这一整串单一的词段。
我们可修改一下前面的 my.sh ,使之内容如下:
代码:
#!/bin/bash
my_fun() {
echo "$#"
}
echo 'the number of parameter in "$@" is '$(my_fun "$@")
echo 'the number of parameter in "$*" is '$(my_fun "$*")
然后再执行 ./my.sh p1 "p2 p3" p4 就知道 $@ 与 $* 差在哪了 ... ^_^
- shell学习之$@ 与 $* 差在哪?
- shell学习之&& 与 || 差在哪?
- shell学习之< 和 > 差在哪?
- SHELL十三问之七:( ) 与 { } 差在哪?
- SHELL十三问之八:$(( )) 与 $( ) 还有${ } 差在哪?
- SHELL十三问之九:$@ 与 $* 差在哪?
- SHELL十三问之十:&& 与 || 差在哪?
- SHELL十三问之十一:> 与 < 差在哪?
- Shell十三问之七:()与{}差在哪
- Shell十三问之八:$(())与$()还有${}差在哪
- Shell十三问之九:$@与$*差在哪
- Shell十三问之十:&&与||差在哪
- Shell十三问之十一:>与<差在哪
- SHELL十三问之八:$(( )) 与 $( ) 还有${ } 差在哪?
- Shell十三问之八:$(())与$()还有${}差在哪
- Shell十三问之八:$(())与$()还有${}差在哪
- shell十三问之7:()与{}差在哪?
- shell十三问之8: $(())与$()还有${}差在哪?
- swig python
- Desktop Heap 用尽
- Android设置xml中的一些警告
- linux core文件GDB调试方法
- 解递归式(分析递归式的算法复杂度)
- shell学习之$@ 与 $* 差在哪?
- osg::Material 材质
- 基于bs架构的读卡程序研究
- mongodb安装和启动
- cannot restore segment prot after reloc: Permission denied 解决方法
- NULL Object模式
- 文献阅读笔记——Action Recognition with Stacked Fisher Vectors
- php5.2.x php5.3.x php5.4.x php5.5.x php5.6.x 对比详解
- matlab注释