shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
来源:互联网 发布:查看论文的软件 编辑:程序博客网 时间:2024/06/05 10:30
shell编程中有一些特殊的变量可以使用。这些变量在脚本中可以作为全局变量来使用。
名称说明$0脚本名称$1-9 脚本执行时的参数1到参数9$?脚本的返回值 $#脚本执行时,输入的参数的个数$@输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表)$*输入的参数的具体内容(将输入的参数作为一个单词)$@与$*的区别:
$@与$*都可以使用一个变量来来表示所有的参数内容,但这两个变量之间有一些不同之处。
$@:将输入的参数作为一个列表对象
$*:将输入的参数作为一个单词
源代码:
1 echo "脚本的名字是:"$0 2 n=1 3 echo "使用\$@的参数列表为:"$@ 4 for temstr in "$@" 5 do 6 echo "第$n个参数是:" $temstr 7 let n+=1 8 done 9 10 11 n=112 echo "使用\$*的参数列表为:"$*13 for temstr in "$*"14 do15 echo "第$n个参数是:" $temstr16 let n+=117 done
执行结果:
1 $ ./test.sh 1 2 3 42 脚本的名字是:./test.sh3 使用$@的参数列表为:1 2 3 44 第1个参数是: 15 第2个参数是: 26 第3个参数是: 37 第4个参数是: 48 使用$*的参数列表为:1 2 3 49 第1个参数是: 1 2 3 4
在上面的例子中,使用$@与$*是,都是用双引号引起来,但当$*不使用双引号时,结果与$@的结果相同。
原因分析:
当都使用双引号时,我们可以看到参数列表输出都是一样的,说明确实两个变量都可以存储所有的参数内容,也就显示出来两个变量之间的对参数处理的不同,即一个将其作为列表处理,一个讲所有参数作为一个单词处理。
当$*不适用双引号时,执行到for语句时,会首先将$*的值(1 2 3 4 )取出来,然后循环语句就变成了 for tem in 1 2 3 4 ,最后的输出结果也就变成了列表的循环输出。
1 源码: 2 #!/bin/bash 3 n=1 4 for tem in $* 5 do 6 echo $n is $tem 7 let n+=1 8 done 9
执行结果:
# ./test.sh 1 2 3 4 1 is 12 is 23 is 34 is 4
在这里补充一下单引号、双引号以及没有引号的区别:
单引号:
可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看见的是什么就会输出什么。
双引号:
把双引号内的内容输出出来;如果内容中有命令,变量等,会先把变量,命令解析出结果,然后在输出最终内容来。
双引号内命令或变量的写法为`命令或变量`或$(命令或变量)。
无引号:
把内容输出出来,可能不会讲含有空格的字符串视为一个整体输出;
如果内容中有命令、变量等,会先把变量、命令解析结果,然后在输出最终内容来;
如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号替代之
- shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
- Shell学习笔记---特殊变量
- 《Linux Shell编程学习笔记之二》:特殊变量(\$*和\$@的区别)、命令替换和变量替换
- shell学习-特殊变量
- shell学习总结之特殊字符及特殊变量
- shell学习笔记之二(变量)
- Shell编程之Shell变量学习总结
- shell学习笔记之五(特殊字符)
- Shell编程学习(1)----shell和shell中的变量
- [Unix]shell编程珠玑(3)--shell 特殊变量
- shell编程中特殊变量的含义(位置变量)
- shell 笔记 特殊变量 特殊字符 Metacharacters
- shell学习笔记--特殊变量参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$
- shell学习三-----特殊变量
- Linux shell 之特殊变量
- Shell特殊变量大全: $0, $#, $*, $@, $?, $$,$!,$- 简介.$@ $*对比详解 -- shell学习
- Linux shell编程学习笔记(二) 变量
- 【原创】无线破解Aircrack-ng套件详解--airmon-ng与airodump-ng
- sqlmap的简要使用方法
- hydra简单使用示例
- shell编程学习笔记之标准输入输出(read&echo)
- Protecting Zonk UVA
- shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
- shell编程学习笔记--整数自增
- shell编程学习笔记之正则表达式初识
- 第二天:html中块行级、margin和padding、盒模型、css选择器和样式
- 编写一个简单的进程池
- shell编程学习笔记之sed编辑器
- shell小脚本--网速监控
- 【转】获取Windows系统明文密码神器
- 柔性数组 斐波拉契序列