Linux Shell学习

1.Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

2.Shell有两种执行命令的方式:

  • 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
  • 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

3.bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。

4.Shell支持自定义变量。

定义变量时,变量名不加美元符号($),如:

  1. variableName="value"

注意,变量名和等号之间不能有空格(两侧都不可以有空格),这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

5.使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:


  1. your_name="mozhiyan"
  2. echo $your_name
  3. echo ${your_name}}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:


  1. for skill in Ada Coffe Action Java
  2. do
  3. echo "I am good at ${skill}Script"
  4. done

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

6.只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

下面的例子尝试更改只读变量,结果报错:

  1. #!/bin/bash
  2. myUrl="http://see.xidian.edu.cn/cpp/shell/"
  3. readonly myUrl
  4. myUrl="http://see.xidian.edu.cn/cpp/danpianji/"

运行脚本,结果如下:

/bin/sh: NAME: This variable is read only.

7.删除变量

使用 unset 命令可以删除变量。语法:

  1. unset variable_name

变量被删除后不能再次使用;unset 命令不能删除只读变量。

时间: 2024-10-25 20:04:36

Linux Shell学习的相关文章

【转】十分有用的linux shell学习总结

在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中 予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参 阅和查

Linux Shell 学习笔记

2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用. exit(0)表示正常退出执行程序,如果加其它的数值:1,2,....可以表示由于不同的错误原因而退出 . main函数中exit(0)等价于return 0. 1. Linux下一条命令或一个进程执行完成会返回一个一个状态码. 0 === 成功执行 非0 === 执行过程

Linux Shell学习之基础篇

在学习Linux和OpenStack过程中,感觉不管是大规模部署部署还是运维,Shell脚本都已经是标配,所以学好脚本很有必要. 以下仅为Linux Shell的一些基础笔记,这里作为笔记记下. ===============linux shell简介====================== 1.命令补全:连续按两次Tab   文件或者文件夹补全:一次Tab   命令帮助:--help 2.chmod u=rwx,g+w,o+r filename   chown root.root file

linux shell学习之shell流程控制

在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构   6.while循环 2.if then else语句 7.until循环 3.case 语句  8.break控制 5.for循环    9.continue控制 1,if then else  if 条件1 如果条件1为真  then 那么  命令1 执行命令1  elif 条件2 如果条件1不成

linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

Linux Shell 学习笔记 一 目录结构

以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   存放普通用户的家目录 如zhangshan家目录为/zhangshan /root     管理员的家目录 /etc       存放配置文件的目录 /boot     存放跟启动相关的文件 /usr       用户自定义的相关程序文件 /porc     内核,硬件参数相关的目录 /var  

linux shell学习计划

因为工作需要,所以打算把linux shell系统学一下子,毕竟shell比较实用,且门槛似乎比其他编程语言要简单一点.大概定的路线就是如下:(1)linux shell 背景以及shell运行执行的机制(2)基础语法A(变量,表达式,参数传递,数量类型,算数运算,逻辑运算等)(3)基础语法B(循环判断之类的控制结构,函数等)(4)正则表达式3大法宝(5)正则表达式进阶(6)linux shell脚本实战(譬如一些监控系统资源的脚本,批量配置下发,批量配置检查脚本,压力测试执行脚本等等~) 原文

Linux Shell学习--awk命令详解

(1).awk介绍 awk是由Alfred Aho .Peter Weinberger 和 Brian Kernighan于1977年开发的变成语言,awk是上述三位创建者姓的首字母. Awk的基本语法与c语言类似,如果对c语言很熟悉,那么学习awk编程也将事半功倍. Awk功能与sed相似,都是用来进行文本处理的,awk语言可以从文件或字符串中基于指定规则浏览和抽取信息,在抽取信息的基础上,才能进行其他文本操作.   awk是一款设计用于数据流的工具.它颇有玩头的原因就在于可以对列和行进行操作

Linux Shell学习笔记(一)

Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令.Shell众多,这里只介绍Bash. 0)实验的Shell版本 显示shell版本: /bin/bash --version 结果: 1)文件.bash_history 该文件保存历史命令,一般是当用户正常退出Shell的时候保存,所在目录为:”~/.bash_history“. 命令显示-目录下,所有以.开始的文件: ls -a ~ | grep ".*" 结果: ①!!,两个叹号