一、shell编程变量简介

shell编程语言属于弱语言,在使用变量前无需对变量进行声明,变量的默认类型为“字符串类型”,可以通过echo $变量名 进行提取变量的值。在bash中,变量类型分为:环境变量、本地变量(局部变量)、位置变量、特殊变量,其中环境变量和本地变量是以作用域来进行区分。
二、变量配置原则
1、变量名只能采用英文字母跟数字命名,并且不能以数字开头
2、给变量赋值时,等号两边不能有空格
3、若等号右边字符串之间有空格或者特殊符号,可以采用 [双引号、单引号]进行括住
例如:NAME='ZWS is a Student'
NAME="ZWS is a Student"
注意:
a. 单引号与双引号的区别:单引号扩住的内容是属于字符串,纯文本的,不会对特殊字符进行转义,双引号扩住的内容会对特殊字符进行转义。
b.如果字符内容存在' " 特殊字符时,需要注意,因为单引号、双引号是成对出现的。
4、可以采用 \ 将特殊字符转换成一般字符(空格、$等)
5、如果需要其他命令返回的值,可通过` `(反单引号)或者$() 扩住相关命令
6、如果需要在子程序中运行,需要通过export将该变量变成环境变量(默认情况下所有的变量都是属于局部变量)
7、取消变量
unset 变量名
8、 ${变量名} 如果能够准确的明确变量明时,可以省略{}

三、变量的数据类型
默认情况下变量的数据类型都是属于字符串类型,没办法对变量进行运算等操作,可以通过declare、typeset方式来设置变量的数据类型。总共有 整型、字符串、数组 等数据类型。
1、declare的使用方法
declare [-aixr] variable
选项与参数:
-a  :将后面名为 variable 的变量定义成为数组 (array) 类型
-i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x  :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r  :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset

a.让sum进行100+200+300数字运行得出和
b.将sum变成环境变量
c.将sum变成只读属性
d.将sum变量转回非环境变量
四、变量作用域
#本地变量:作用域为整个bash进程有效
VARNAME=VALUE#局部变量:作用域为当前代码段有效
local VARNAME=VALUE #环境变量:作用域为当前的shell进程及其子进程
export  VARNAME=VALUE

五、环境变量

注意:
1、脚本在执行时会启动一个字shell子进程
2、命令行启动脚本启动脚本会继承当前shell环境变量。
3、系统自动执行的脚本(非命令行启动),需要手动定义环境变量。 ===》(crontab自动执行执行脚本可能有问题)
六、if条件判断
1、单层简单条件判断

if [ 条件判断]; then符合条件执行该语句
fi     ---->结束 if

2、多重条件判断
if [ 条件判断式一 ]; then符合条件一,执行该语句
elif [ 条件判断式二 ]; then符合条件二,执行该语句
else条件一与二均不成立时,执行该语句
fi  ------>结束if语句

七、case判断

1、case应用场景:
适用于需要进行多重分支的应用情况(固定重数)
 
2、case语法格式
case  $变量名称 in   <===以case开头 $+关键字  然后in结尾
模式1 )        <===判断语句,可采用特殊字符
程序段1
;;                     <===使用两个连续的分号,代表该模式程序段结束,类似c语言中的break;
模式2 )
程序段2
  ;;
 * )        <===用 * 来代表所有其他值,类似c语言中的default。
默认执行程序段
 ;;
esac                  <===结束case语句 【case反过来写】

转载于:https://www.cnblogs.com/zhengws/articles/6686883.html

shell 基本使用相关推荐

  1. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  2. Linux shell 学习笔记(16)— shell 入门总结

    1. Shell 变量 Shell 变量包括自定义变量和环境变量: 自定义变量:脚本中自己命名定义的变量,通常为局部变量,其他 Shell 程序不能访问到: 环境变量,操作系统已定义的变量,如 PAT ...

  3. 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

    1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...

  4. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  5. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  6. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)

    1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...

  7. Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符

    1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...

  8. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)

    1. 使用 if-then 语句 最基本的结构化命令就是if-then语句.if-then语句有如下格式. if command then ​ commands fi 或者 if command; t ...

  9. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  10. Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)

    1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...

最新文章

  1. 列表list和numpy的ndarray的copy()函数
  2. PowerShell学习笔记(三)
  3. 【leetcode】258. Add Digits
  4. activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...
  5. github本地文件和远端文件的协同
  6. 简单几步搞定ISA ×××
  7. Mysql查询数据库状态及信息
  8. css3制作炫酷导航栏效果 转
  9. 所谓高情商就是会说话--总结
  10. python 文件和目录基本操作_Python常用的文件及文件路径、目录操作方法汇总介绍...
  11. 红帽取代 Oracle,接管 OpenJDK 8 和 OpenJDK 11 | 极客头条
  12. 15投影矩阵与Moore-Penrose逆(2)
  13. iOS 拼音 Swift K3Pinyin
  14. 团队项目(2.1) -- 飞机躲避小游戏
  15. MySQL——Student、Course、Teacher、SC SQL查询练习题
  16. 2020年度广东学法普法平台开始了
  17. 一览各类无人飞机设计方法
  18. Another Redis Desktop Manager 链接redis,redis集群链接后用显示不全的问题
  19. Git克隆Github项目学习笔记
  20. Redis五大数据类型及常见命令

热门文章

  1. 机器学习、数据挖掘及其他
  2. 结合JDK源码看设计模式——策略模式
  3. 使用Nginx实现服务器反向代理和负载均衡
  4. R 变量名开头不能为数字
  5. sed和awk的常用实例
  6. sql server 2008手工修改表结构,表不能保存的问题与解决
  7. UI产品设计流程中的14个要点
  8. Android开发之WebView的开发使用(源代码分享)
  9. 应用程序进程(一):创建应用程序
  10. 安卓高手之路之 应用篇