文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Shell基本语法之一:什么是变量?

2024-12-03 02:06

关注

在本书中,我们将shell的基本语法分为5块:变量、运算符、条件、循环、函数(其实任何程序语言都可以说是由这几块组成)。

本节内容就分别简短地介绍下Shell的基本语法,有其他语言经验的读者们可能会更好理解。

没有其他语言经验的多写几个Shell脚本也就理解了。

1.变量是什么?

顾名思义,变量通常是可变的。在计算机程序语言中,这是第一个需要了解的概念。

简单来说,在数学上它是计算公式中的x,在物理上它是一个内存空间。

在声明变量时,相当于在计算机内存中,开辟了一个地方,存放了这个变量符号。

它会不断地被赋值,每被赋值一次,之前的值就会被清空,它的内部就保存了现在这个值的数据。

2.变量赋值

赋值示例:

  1. war_name=yaomm      ## 赋值yaomm这个数据给了war_name这个变量 

变量的赋值规则:

  1. 变量名和等号之间不能有空格,例如“war_name = yao”。 
  2.  
  3. 命名只能使用英文字母、数字和下划线,首字符不能以数字开头,例如“3war”。 
  4.  
  5. 变量名中间不能有空格,可以使用下划线“_”,例如“war name”。 
  6.  
  7. 变量名不能使用标点符号,如点“.”,例如“.=yaomm”。 
  8.  
  9. 不能使用bash里的关键字(可用help命令查看保留关键字),例如“bash=233”。 

3.变量使用示例

  1. [root@linuxido ~]# var_name=yaomm   ##  变量赋值,赋值var_name变量为yaomm 
  2. [root@linuxido ~]# echo ${var_name} ##  使用echo打印变量,变量以【${}】方式引用 
  3. yaomm 
  4. [root@linuxido ~]# echo $var_name       ##  也可以使用【$ + 变量名】输出变量值 
  5. yaomm 
  6. [root@linuxido ~]# echo "var_name is $var_name" ## ==> 变量可以在双引号中被引用 
  7. var_name is yaomm 

${var_name}与$var_name的区别是:被花括号包围的变量不会产生歧义。

例如有一个变量名为var_nameexe的值是23,此时echo $var_nameexe 应打印什么值?

4.变量传参

什么是变量传参?

即在编写脚本时预留一个变量,然后由外部传递进来一个具体的值给这个变量。

示例如下:

  1. [root@linuxido shell]# cat 001.sh   ##  查看使用【vi 001.sh】编辑的第一个脚本 
  2. #!/bin/bash 
  3. # author:姚毛毛的博客 
  4.  
  5. echo "Shell 传递参数实例!" 
  6. echo '第一个参数${1}:'  ${1} 
  7. echo '第二个参数$2:'  $2 
  8. echo '参数个数$#:'  $# 
  9. echo '所有参数作为一个字符串显示$*:'  $* 
  10. echo '所有参数合为数组$@:'  $@ 
  11. echo '当前脚本进程号PID:'  $$ 
  12.  
  13. [root@linuxido shell]# sh 001.sh yaomm 666  ##  执行001.sh,参数有2个:yaomm、666 
  14. Shell 传递参数实例! 
  15. 第一个参数$1:yaomm 
  16. 第二个参数$2:666 
  17. 参数个数$#:2 
  18. 所有参数作为一个字符串显示$*:yaomm 666 
  19. 所有参数合为数组$@:yaomm 666 
  20. 当前脚本进程号PID:65134 

参数传递规则:

  1. $0:脚本自身文件名。 
  2.  
  3. $#:传递到脚本的参数个数。 
  4.  
  5. $n:传递到脚本的第一个参数,n为传递参数的顺序。 
  6.  
  7. $*:所有参数合成一个字符串。 
  8.  
  9. $@:所有参数,一个数组。 
  10.  
  11. $$:当前脚本运行的进程号PID。 
  12.  
  13. $?:上一个脚本、函数返回结果。 

要执行的脚本为全路径时,使用$0会获取到脚本路径,如果只想取脚本路径或者脚本名称,可以使用【dirname】、【basename】这两个命令,如下所示:

  1. [root@linuxido /shell]# dirname /shell/001.sh       ##  获取路径 
  2. /shell 
  3. [root@linuxido /shell]# basename /shell/001.sh  ##  获取脚本名称 
  4. 001.sh 

5.数组

在Shell中除了普通变量外,还有个数组变量(只支持一维数组)。

与其他语言类似,数组下标从0开始。

不同的是,数组内容要用括号来表示,数组元素之间使用空格分割。

示例如下:

  1. [root@linuxido shell]# war_array=(y ao "mm" 1987)   ##  设置数组元素内容 
  2. [root@linuxido shell]# echo ${war_array[*]} ##  打印所有数组元素 
  3. y ao mm 1987 
  4. [root@linuxido shell]# echo ${war_array[2]} ##  打印第三个数组元素 
  5. mm 
  6. [root@linuxido shell]# echo ${#war_array[@]}    ##  数组元素个数 
  7. [root@linuxido shell]# echo ${#war_array[*]}    ##  数组元素个数 

或者使用下标定义数组:

  1. war_array[0]=y 
  2. war_array[1]=ao 
  3. war_array[2]=’mm’ 
  4. war_array[3]=2021 

 

来源: Linux常用命令内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯