Shell理论学习(三)

37.调整变量的属性

  • 只读变量:使用readonly命令

    readonly 变量名称

  • readonly其他用法

    • readonly或readonly -p:显示目前具有只读属性的变量列表

    • readonly -f 函数名称:设定该函数式不可修改

    • readonly -a 数组变量:设定-a后接的变量名是只读的数组

  • 只读变量:使用declare

    技术分享


38.自定义环境变量

  • 以一般用户登录时

    技术分享

  • 以系统管理员的角色工作时,环境变量配置文件有三个

    • /etc/profile

    • /etc/bash.bashrc

    • /etc/skel目录下的所有文件

39.Here Document

基本用法:

[root@test ~]#  cat >>123.txt<< end
> hello 
> my name is "jack"
> welcome to BJ
> end
You have new mail in /var/spool/mail/root
[root@test ~]# cat 123.txt 
hello 
my name is "jack"
welcome to BJ
  • Here Document也支持变量替换.在输入的内容中,如果有变量,bash在转向前,会先替换变量值

技术分享

  • 如何在变量中使用

[root@test ~]# Wow=‘Wow,great!‘
[root@test ~]# m1=$(cat <<HERE
> line 1 is good.
> They are jack,marry and john.
> $WoW
> HERE
> )
[root@test ~]# echo $m1
line 1 is good. They are jack,marry and john.
  • 如何关闭变量

[root@test ~]# m1=$(cat <<‘HERE‘
> line 1 is good.
> They are jack,marry and john.
> $WoW
> HERE
> )
[root@test ~]# echo $m1
line 1 is good. They are jack,marry and john. $WoW
  • 做多行批注

技术分享

40.如何测试变量是否存在

语法: ${待测变量-默认值}

解释:判断待测变量是否存在,如果变量存在,就传回变量的值,如果没有就会将默认值传给待测变量

  • 判断变量是否存在

[root@test ~]# unset myname
[root@test ~]# r=${myname-‘basher‘}
[root@test ~]# echo $r
basher
[root@test ~]# myname="Jack"
[root@test ~]# r=${myname-‘basher‘}
[root@test ~]# echo $r
Jack
  • 判断变量是否不存在或者为空

[root@test ~]# myname=
[root@test ~]# r=${myname:-‘basher‘}
[root@test ~]# echo $r
basher
[root@test ~]# unset myname
[root@test ~]# r=${myname:-‘basher‘}
[root@test ~]# echo $r
basher
  • 用if判断

    技术分享

  • 测试变量是否"不存在"或其值为空:提示错误信息

语法:${待测变量:?提示信息}

解释:判断变量是否"不存在"或者为"空",如果条件成立,则显示:?后的提示信息。并立即停止执行script

拆解表达式:

技术分享

范例:

技术分享

本文出自 “Linux革命” 博客,请务必保留此出处http://kaibinyuan.blog.51cto.com/7304008/1612017

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。