三、变量:shell变量的定义、使用、重命名、只读变量、删除变量、变量类型、特殊变量
2017-08-07 15:58
501 查看
shell变量是支持自定义的
(1)定义变量(等号两边不能有空格)
eg:
定义变量:变量名=”变量值”,
注意:
变量名前面不要加$,不需要指定变量类型
变量名和等号之间不能有空格
变量命名规则:字下美人其后数
(字–字母)(下–下划线)(美人–美元符号)(其后–后面)(数–数字)
首字符必须为字母(a-z,A-Z)
中间不能有空格,可以有下划线_
不能使用标点符号
不能用bash里的关键字(用help命令可以查看保留关键字)
(2)使用变量
变量引用:变量名前加 $
eg1:
eg2:
注意:
变量引用:给变量名加{}或者 在$前面加空格,变量名后面加空格;或标点符号;不这样做有时候无法识别变量
(3)变量重命名(已定义的变量可以重新定义)
注意:二次赋值不能写成 name="小琪",引用时候才加
(4)只读变量
用readonly命令将普通变量定义成为只读变量,只读变量的值不能修改
eg:(改为只读变量和赋值同时进行正确,否则错误)
eg:(尝试更改只读变量)
运行结果:
错误:只读变量无法识别
(5)删除变量
使用unset命令删除变量;
语法:
unset 变量名
eg:(删除普通变量)
变量删除之后不能再次使用;unset不能删除只读变量
eg:(删除只读变量)
运行结果:(不能删除只读变量)
(6)变量类型
1局部变量
在脚本和命令中使用,仅仅在当前shell脚本中有效,其他脚本无法使用该局部变量
2环境变量
所有的shell脚本都能访问该变量,环境变量可以自己定义
3 shell变量
shell变量是shell脚本的特殊变量
(7)特殊变量:$$,$0,$1,$*,$@
1)普通变量和特殊变量
普通变量:
字下美人其后数
特殊变量:包含一些其他符号;例如:$$,$0,$1,$*,$@
$表示当前shell脚本的进程号PID 25363
eg:
执行结果:
2)特殊变量使用表:
变量 意义
$$ 当前shell脚本的进程(PID)25363
$0 当前shell脚本的文件名
$n 传递给脚本的参数,n可以写成除0以外的参数,eg:$1表第一个参数;$2表第二个参数
$* 以一个字符串的形式显示所有参数
$@ 显示所有参数,加”“后就和$*不一样,(下面案例)
$? 上一个命令的退出状态,或者函数的返回值。0表示成功 1表失败 如果上一条不是前两种情况是方法,返回一个方法的返回值
$# 返回传递给脚本的参数个数
eg1:
执行结果:这种情况是因为参数不是传进去的
显示所有参数:
eg2:vi t2.sh
执行:
结果:
错误执行方式:
结果:
3)∗和@的区别?
eg1:
eg2:
执行结果:
总结:
相同点:∗和@:在不使用for循环时,效果都一样,都是一个参数一个参数来显示,eg:”1""2”“3""4”
a b c d
a b c d
不同点:加for循环
∗:把所有参数当成一个参数来显示(一个字符串)@:把各个参数分开显示(eg:for循环换行显示i)
4)退出状态
$? 上一个命令的退出状态,或者函数的返回值。0表示成功 1表失败 如果上一条不是前两种情况是方法,返回一个方法的返回值
返回值:可以指定 exit n(n可以随便指定一个数值) exit 46
eg 1:
执行结果:
eg 2:
(1)定义变量(等号两边不能有空格)
eg:
name="Lucy"
定义变量:变量名=”变量值”,
注意:
变量名前面不要加$,不需要指定变量类型
变量名和等号之间不能有空格
变量命名规则:字下美人其后数
(字–字母)(下–下划线)(美人–美元符号)(其后–后面)(数–数字)
首字符必须为字母(a-z,A-Z)
中间不能有空格,可以有下划线_
不能使用标点符号
不能用bash里的关键字(用help命令可以查看保留关键字)
(2)使用变量
变量引用:变量名前加 $
eg1:
name="Lucy" echo "她叫: $name hahah"
eg2:
name="Lucy" echo "她叫: ${name} hahah"
注意:
变量引用:给变量名加{}或者 在$前面加空格,变量名后面加空格;或标点符号;不这样做有时候无法识别变量
(3)变量重命名(已定义的变量可以重新定义)
name="Lucy" echo ${name} name="小琪" echo ${name}
注意:二次赋值不能写成 name="小琪",引用时候才加
(4)只读变量
用readonly命令将普通变量定义成为只读变量,只读变量的值不能修改
eg:(改为只读变量和赋值同时进行正确,否则错误)
#!/bin/bash readonly Myname="Lucy" echo ${Myname}
eg:(尝试更改只读变量)
#!/bin/bash Myname="Lucy" echo ${Myname} readonly Myname Myname="明明" echo ${Myname}
运行结果:
[root@h data]# ./n1.sh Lucy ./n1.sh: line 5: Myname: readonly variable Lucy
错误:只读变量无法识别
./n1.sh: line 5: Myname: readonly variable Lucy
(5)删除变量
使用unset命令删除变量;
语法:
unset 变量名
eg:(删除普通变量)
#!/bin/bash name="小琪" echo ${name} unset name echo ${name}
变量删除之后不能再次使用;unset不能删除只读变量
eg:(删除只读变量)
#!/bin/bash name="小琪" echo ${name} readonly name echo ${name} unset name echo ${name}
运行结果:(不能删除只读变量)
./n3.sh: line 7: unset: name: cannot unset: readonly variable 小琪
(6)变量类型
1局部变量
在脚本和命令中使用,仅仅在当前shell脚本中有效,其他脚本无法使用该局部变量
2环境变量
所有的shell脚本都能访问该变量,环境变量可以自己定义
3 shell变量
shell变量是shell脚本的特殊变量
(7)特殊变量:$$,$0,$1,$*,$@
1)普通变量和特殊变量
普通变量:
字下美人其后数
特殊变量:包含一些其他符号;例如:$$,$0,$1,$*,$@
$表示当前shell脚本的进程号PID 25363
eg:
#!/bin/sh echo $$
执行结果:
[root@h data]# /bin/sh ./t.sh 25363
2)特殊变量使用表:
变量 意义
$$ 当前shell脚本的进程(PID)25363
$0 当前shell脚本的文件名
$n 传递给脚本的参数,n可以写成除0以外的参数,eg:$1表第一个参数;$2表第二个参数
$* 以一个字符串的形式显示所有参数
$@ 显示所有参数,加”“后就和$*不一样,(下面案例)
$? 上一个命令的退出状态,或者函数的返回值。0表示成功 1表失败 如果上一条不是前两种情况是方法,返回一个方法的返回值
$# 返回传递给脚本的参数个数
eg1:
#!/bin/bash name="小花" age=“16” sex=“女” echo "我是${name},芳龄$age,$sex" echo "当前shell脚本的PID:$$" echo "当前shell脚本的文件名:$0" echo "返回当前shell脚本的第一个参数:$1" echo "返回当前shell脚本的第三个参数:$3" echo "以一个字符串的形式显示所有参数:$*" echo "$@" echo "显示所有参数:$@" echo "上一个命令的退出状态:$?" echo "返回传递给脚本的参数个数:$#"
执行结果:这种情况是因为参数不是传进去的
[root@h data]# /bin/sh ./t1.sh 我是小花,芳龄“16”,“女” 25522 ./t1.sh
显示所有参数:
0 0
eg2:vi t2.sh
echo $$ echo $0 echo $1 echo $3 echo $* echo $@ echo "显示所有参数:$@" echo $? echo $#
执行:
/bin/sh t2.sh "a" "b" "c" "d"
结果:
[root@h data]# /bin/sh t2.sh "a" "b" "c" "d" 25544 t2.sh a c a b c d a b c d 显示所有参数:a b c d 0 4
错误执行方式:
/bin/sh t2.sh "a b c d" /bin/sh t2.sh "a,b,c,d"
结果:
[root@h data]# ./a.sh "a b c" 当前shell脚本的PID:27575 当前shell脚本的文件名:./a.sh 返回当前shell脚本的第一个参数:a b c 返回当前shell脚本的第三个参数: 以一个字符串的形式显示所有参数:a b c a b c 显示所有参数:a b c 上一个命令的退出状态:0 返回传递给脚本的参数个数:1
3)∗和@的区别?
eg1:
echo $* echo $@ 执行结果: [root@h data]# /bin/sh ./t1.sh "a" "b" "c" "d" a b c d a b c d
eg2:
echo "--------\例一:$*--------" for i in "$*";do echo $i done echo "--------\例二:$@--------" for i in "$@";do echo $i done
执行结果:
[root@h data]# /bin/sh ./t2.sh "a" "b" "c" "d" --------\例一:a b c d-------- a b c d --------\例二:a b c d-------- a b c d
总结:
相同点:∗和@:在不使用for循环时,效果都一样,都是一个参数一个参数来显示,eg:”1""2”“3""4”
a b c d
a b c d
不同点:加for循环
∗:把所有参数当成一个参数来显示(一个字符串)@:把各个参数分开显示(eg:for循环换行显示i)
4)退出状态
$? 上一个命令的退出状态,或者函数的返回值。0表示成功 1表失败 如果上一条不是前两种情况是方法,返回一个方法的返回值
返回值:可以指定 exit n(n可以随便指定一个数值) exit 46
eg 1:
exit 3 echo $?
执行结果:
[root@h data]# vi t4.sh [root@h data]# /bin/sh ./t4.sh [root@h data]# echo $? 3 $?还可以表示函数返回值,后面讲函数时讲解
eg 2:
#!/bin/bash var1=1 var2=3 var3=$[$var1+$var2] echo the answer is $var3 echo "执行成功" echo $? 执行: [root@h data]# ./t3.sh the answer is 4 0
相关文章推荐
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- 【转】shell 教程——06 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- (shell笔记六)Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Linux Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- 再说Shell变量的定义、删除变量、只读变量、变量类型
- 【Shell脚本学习6】Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- 【Shell脚本学习6】Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- 五、Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Linux之Shell学习(二)Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型