返回顶部
首页 > 资讯 > 操作系统 >linux shell编程学习笔记(3)
  • 862
分享到

linux shell编程学习笔记(3)

学习笔记linuxshell 2023-01-31 01:01:54 862人浏览 安东尼
摘要

1、什么是变量保存变化的数据——变量名:名称固定,由系统预设或用户自定义——变量值:根据用户设置、系统环境变化而变化2、如何定义变量——变量名=变量的值2.1变量名的规则(1)数字、字母、下划线(2)字母区分大小写(3)当变量名相同时,后赋

1、什么是变量

保存变化的数据

——变量名:名称固定,由系统预设或用户自定义

——变量值:根据用户设置、系统环境变化而变化


2、如何定义变量

——变量名=变量的值

2.1变量名的规则

(1)数字、字母、下划线

(2)字母区分大小写

(3)当变量名相同时,后赋值的生效

(4)不能以数字开头

(5)等号两边不能有空格

(6)能以下划线开头

(7)变量名不能有特殊符号

(8)尽量不要使用系统关键字做变量名


3、如何使用变量

——#$变量名


4、如何输出变量

——#echo $变量名


5、如何删除变量

——#unset 变量名


6、如何查看已经定义的变量

1)env 查看系统环境变量,环境变量一般都是大写

2)set 查看所有变量,包括系统环境变量和自定义变量

3)set | grep 变量名  //查看某个变量


7、变量的生命周期和范围(作用域)

7.1局部变量

(1)在脚本里定义的变量只有在脚本里生效

(2)默认定义的变量只在当前的shell里可以使用,无法在子shell使用。要想定义的变量让所有的shell都可以用,要在系统启动时把它定义为全局变量


7.2全局变量

定义为全局变量的方法:


(1)export 变量名         //已经定义好的变量设为全局变量

(2)export 变量名=变量值//将要定义的变量定义为全局变量

export其实就是声明一下这个变量的意思,让该shell的子shell也知道这个变量的变量值.如果export后面不加任何变量名,则它会声明所有的变量。


8、变量的累加赋值

1)#a=100

#b=$a


2)#c=$a$b

3)#c=$a2$b

4)#c=$a"2"$b


5)PATH=$PATH:/usr/local/Mysql/bin


[root@ndbA ~]# a=100

[root@ndbA ~]# echo $a

100

[root@ndbA ~]# a=${a}100  

[root@ndbA ~]# echo $a  

100100

[root@ndbA ~]# a=${a}"100"

[root@ndbA ~]# echo $a    

100100100

9、变量的相关配置文件:

9.1系统级环境变量配置文件

——对所有用户生效。执行脚本;定义变量;执行命令

(1)/etc/profile

——这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MaiL, INPUTRC, HOSTNAME, HISTSIZE, umas等等

(2)/etc/bashrc  

——这个文件主要预设umask以及PS1变量

9.2用户级环境变量配置文件

——仅对某个用户生效,执行脚本;定义变量;执行命令

(1)~/.bashrc

——定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次

(2)~/.bash_profile

——该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。



9.3/etc/profile、/etc/bashrc 、~/.bashrc、~/.bash_profile的执行顺序

(1)

首先这个:  /etc/profile

然后这个:  /etc/bashrc。

接下来这个:~/.bashrc

最后这个:  ~/.bash_profile


(2)验证


——以创建目录的方式验证

1)在/etc/profile最后添加mkdir -p /test/profile 命令

2)在/etc/bashrc最后添加mkdir -p /test/bashrc 命令

3)在~/.bash_profile最后添加mkdir -p /test/.profile 命令

4)在~/.bashrc最后添加mkdir -p /test/.bashrc 命令

5)重启系统

6)#ls  -la –full-time 查看

wKiom1MF8LPCuYEVAAQEcWvY4II474.jpg


由图可知:最先创建的是profile目录,然后是bashrc目录,接下来是.bashrc隐藏目录,最后是.profile隐藏目录。

可以得出结论:四个配置文件执行的顺序依次是/etcprofile  /etc/bashrc  ~/.bashrc ~/.bash_profile



10、shell里的变量的类型

10.1系统环境变量:

——系统在其他时读取系统的配置文件定义的变量,一般系统环境变量为大小字母。下面是常见的环境变量

PATH            决定了shell将到哪些目录中寻找命令或程序

HOME         当前用户主目录

HISTSIZE         历史记录数

LOGNAME      当前用户的登录名

HOSTNAME       指主机的名称

SHELL           当前用户Shell类型

LANG           语言相关的环境变量,多语言可以修改此环境变量

MAIL            当前用户的邮件存放目录

PWD            当前目录


10.2预定义变量:

——shell里事先预定好的变量,变量名和变量值是固定的,不能直接赋值和修改,需要时可直接调用

(1)$$

——保存运行的进程的PID号

[root@sqlB ~]# echo $$

1864      ——bash的进程号

(2)$?

——保存命令执行结果的返回状态。0表示正常,1-255表示上一条不成功,不同的非零结果代表的返回状态是不同的


[root@sqlB ~]# cd /etc/

[root@sqlBetc]# echo $?

0

[root@sqlB etc]# cd a

-bash: cd: a: 没有那个文件或目录

[root@sqlB etc]# echo $?

1

[root@sqlB /]# ls -e /etc/

ls:无效选项 -- e

请尝试执行"ls--help"来获取更多信息。

[root@sqlB /]# echo $?

2                                             ——代表上条命令的参数错误

[root@sqlB /]# /etc/passwd

-bash: /etc/passwd: 权限不够

[root@sqlB /]# echo $?

126                   ——代表没有权限执行上条命令

[root@sqlB /]# aa

-bash: aa: command not found

[root@sqlB /]# echo $?

127                     ——代表上条执行的命令不存在

(3)$0

——保存当前运行的进程名或脚本名。注意是数字0

[root@sqlB ~]# echo $0

-bash

(4)$#

——保存位置变量的个数

[root@sqlB ~]# echo $#

0

(5)$*

——保存所有为位置变量的值

[root@sqlB ~]# echo $*

——空值,因为没有位置变量

[root@sqlB ~]#

(6)$!

——保存后台最后一个进程的PID号

[root@sqlB ~]# lftp&

[1] 2690

[root@sqlB~]# echo $!

2690

10.3位置变量:

——执行脚本或调用函数时后边跟着的参数

$1

$2

$3

.

.

.

当位置大于9时,需要加上大括号{};

如:${11}, 11是当成一个整体,$11是$1+1

10.4自定义变量:

——由用户自己设置、修改和使用的变量



11、与变量相关的符号

11.1单引号:

——''   调用变量使用单引号,变量被当做普通字符处理

11.2双引号:

——""   调用变量使用双引号,变量被当做普通字符处理

单引号和双引号的区别:用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用

[root@sqlB ~]# name=tom

[root@sqlB ~]# echo '$name'

$name

[root@sqlB ~]# echo "$name"

tom

11.3反撇号:

——``  将命令的执行输出作为变量值

[root@sqlB ~]# date

2014年 02月 20日星期四 11:47:09 CST

[root@sqlB ~]# day=`date`

[root@sqlB ~]# echo $day

2014年 02月 20日星期四 11:47:40 CST

[root@sqlB ~]#


--结束END--

本文标题: linux shell编程学习笔记(3)

本文链接: https://lsjlt.com/news/183629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • linux shell编程学习笔记(3)
    1、什么是变量保存变化的数据——变量名:名称固定,由系统预设或用户自定义——变量值:根据用户设置、系统环境变化而变化2、如何定义变量——变量名=变量的值2.1变量名的规则(1)数字、字母、下划线(2)字母区分大小写(3)当变量名相同时,后赋...
    99+
    2023-01-31
    学习笔记 linux shell
  • shell 学习笔记3
    ####shell结构 #!指定执行脚本的shell #注释行 命令和控制结构  第一步:创建一个包含命令和控制结构的文件  第二步:修改这个文件的权限使它可以执行,chmod u+x...
    99+
    2023-01-31
    学习笔记 shell
  • shell学习笔记(3)
    一、if基础 1、单分支 1.1 语法 if语句语法 单分支结构语法: if [条件]; then 指令 fi 或 if [条件] then ...
    99+
    2023-01-31
    学习笔记 shell
  • Linux学习笔记 Day 2~3
    继续整理周末课程的Linux学习笔记。 vim编辑器 最受欢迎的是emacs,vim是vi的增强版本,特点是编辑内容时有颜色变化。命令:vim /etc/passwd 三种模式: 1. 普通模式-->可视模式 2....
    99+
    2023-01-31
    学习笔记 Linux Day
  • 2018-3-14 Linux学习笔记
    Nginx访问日志的格式是在主配置文件中定义的. vim /usr/local/nginx/conf/nginx.conf //搜索log_format 日志字段含义:$remote_addr 客户端IP(公网IP...
    99+
    2023-01-31
    学习笔记 Linux
  • 2018-3-15 Linux学习笔记
    编辑虚拟主机配置文件vim /usr/local/nginx/conf/vhost/test.com.conf 配置如下:location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|...
    99+
    2023-01-31
    学习笔记 Linux
  • 2018-3-29 Linux学习笔记
    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...
    99+
    2023-01-31
    学习笔记 Linux
  • 学习笔记3
    一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth...
    99+
    2023-01-31
    学习笔记
  • 学习笔记(3)
    1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc 只显示/etc下面的文件夹3.显示/v...
    99+
    2023-01-31
    学习笔记
  • Python 3 学习笔记:面向对象编程
    概述 面向对象编程(Object Oriented Programming,即 OOP),是一种程序设计思想,比面向过程编程更加灵活,更易扩展。 Python 在设计的时候就是按照面向对象编程的思想设计的,像我们前面学过的各种数据类型,如字...
    99+
    2023-01-31
    面向对象 学习笔记 Python
  • PowerShell 学习笔记(3)
    获取对象的过程中,最好先筛选出对象,再进行操作。(即筛选在排序左边)不区分大小写get-process | where {$_.handles –ge 1000}使用where获取所有对象,用对象执行大括号里的代码,如果...
    99+
    2023-01-31
    学习笔记 PowerShell
  • PHP 学习笔记 (3)
    昨天笔记2说道了PHP的标记以及短标记,今天记录下如何吧PHP从HTML分离手册参考:http://www.php.net/manual/zh/language.basic-syntax.phpmode.phpPHP手册告诉我们,PHP凡是...
    99+
    2023-01-31
    学习笔记 PHP
  • cisco学习笔记(3)
    1. 交换机支持的命令:交换机基本状态: switch: ;ROM状态, 路由器是rommon>hostname> ;用户模式hostname# ;特权模式...
    99+
    2023-01-31
    学习笔记 cisco
  • OSPF 学习笔记3
    ospf特殊区域 减少LSA洪泛,达到优化路由表的目的 sub区域特点 1、过滤了LSA4/5 2、通过ABR的LSA3学习到一条到达域外的缺省路由(O*IA) 3、区域内所有的路由器都得设置为stub路由器 ...
    99+
    2023-01-31
    学习笔记 OSPF
  • perl学习笔记(3)
    条件结构: if(...){       ...; }elsif(...){       ...; }else{       ...; } 数值关系运算符 ==,>...
    99+
    2023-01-31
    学习笔记 perl
  • GEF学习笔记3
    八、创建嵌套的视图 前面的步骤,创建了公司视图,下面再创建一个国家视图用来容纳公司视图。这就需要按前面的方法把MVC都重新创建一遍。 Model View(Figure) Control(EditPart) 注意重写红框中标...
    99+
    2023-01-31
    学习笔记 GEF
  • python学习笔记(3)
    在大概了解了程序之后,我也买了本python书学习一下,因为现在新版的python3.4.0已经不再兼容2.x.x的内容,书虽然很新,但是有些例子还是用的过去的。1.比如在3.0中print 42不能再产生输出了,要改成print(42)&...
    99+
    2023-01-31
    学习笔记 python
  • CCNP学习笔记(3)
    一、RIPv2:Routing Information Protocol 路由信息协议 1.特性: ①属于“距离矢量”路由协议 ②定期发送路由更新(30S一次,路由表中所有路由) ③依据“跳数”衡量路径好坏 ...
    99+
    2023-01-31
    学习笔记 CCNP
  • JAVA编程学习笔记
    常用代码、特定函数、复杂概念、特定功能……在学习编程的过程中你会记录下哪些内容?快来分享你的笔记,一起切磋进步吧! 一、常用代码 在java编程中常用需要储备的就是工具类。包括封装的时间工具类。htt...
    99+
    2023-09-03
    java 学习 笔记
  • MySQL学习笔记(3):SQL
    本文章更新于2020-06-14,使用MySQL 5.7,操作系统为Deepin 15.9。 目录DDL语句创建数据库删除数据库修改数据库创建表删除表修改表创建索引删除索引创建视图修改视图删除视图存储过程和函数创建事件修改事件删除...
    99+
    2022-04-25
    MySQL学习笔记(3):SQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作