Shell特殊参数变量
1.Shell变量
1.1.本地变量
定义shell变量,变量不需要加美元符`$`
本地变量只在用户当前shell生存期中有效,如:
1.2.变量定义
1.2.1 变量名要求:字母、数字、下划线组成、可以是字母或是下划线开头,如:
wayne
wayne_123
_wayne_123
1.2.2 变量名严格区分大小写:
Way_ne
way_ne
1.2.3 取出变量值:
单引号,所见所得,强引用
双引号,输出引号里所有内容,识别特殊符号,弱引用
无引号,连续的符号可以不加引号,有空格则有歧义,最好使用双引号
反引号,引用命令执行结果,等于 $() 用法
1.2.4 特殊变量:
shell的特殊变量,用在如脚本,函数传递参数使用,有如下特殊的,位置参数变量
参数传递,案例:
位置参数的获取演示:
$0 获取shell脚本文件名,以及脚本路径
$n 获取shell脚本的第n个参数,n在1~9之间,如$1 $2,$9 ,大于9则需要写,$(10],参数空格隔开
$# 获取执行的shell脚本后面的参数总个数
$* 获取shell脚本所有参数,不加引号等同于$@作用,加上引号"$*"作用是 接收所有参数为单个字符串,"$1 $2..
$@ 不加引号,效果同上,加引号,是接收所有参数为独立字符串,如”$1”“$2”"$3" 。..,空格保留
$*和$@的区别:
1.$* 和$@ 都表示传递给函数或脚本的所有参数
当$* 和 $@ 不被双引号 " "包围时,他们之间没有任何区别,都是将接受到的每个参数看做一份数据,彼此之间以空格来分隔。
当$* 和 $@ 被双引号 " "包围时,就会有区别的:
区别1:"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
结果1:"Wanye wxl 100 200 300 400"
区别2:"$@"仍然将每个参数都看做一份数据,彼此之间是独立的。
结果2:
"Wanye"
"wxl"
"100"
"200"
"300"
"400"
案例:
比如传递5个参数,对于"$*"来说,这5个参数会合并到一起形成一份数据,他们之间是无法分割的;对于"$@"来说,这5个参数是互相独立的,他们是5份数据。
如果直接用echo直接打印"$*"和"$@"做对比,是看不出区别的;但是如果使用for循环来逐个输出数据,立即就看出区别
实践"$*" 和"$@" 的区别:
反斜杠“\”,是转义符号的概念
"$*"和"$@"分别实行for循环输出的结果: