欢迎来到LYBLaoInB的博客
LYBLaoInB
LYBLaoInB
回首往事,不因虚度年华而悔恨,不因碌碌无为而愧疚

Shell初识(概念,变量)

一、Shell概述

linux内核驱动硬件,外层应用程序,比如LOL之类的想要操作Linux内核,就需要通过shell来控制硬件。如下图

 

 

 Shell是一个命令行解释器,它能接受应用程序/用户命令,然后调用操作系统内核。也是一个功能相当强大的编程语言,特点是易编写,易调试,灵活性强。

二、感受Shell

在linux操作系统的/etc/shells文件中可以查看到如下信息,/etc/shells是一个用来说明有效shell的配置文件。也就是说显示出来的所有方式都可以使用shell

 我们去bin目录下看看,就可以发现bash和sh都是用bash解析的。我们查看一下环境变量可以看到shell就是默认用bash解析的

 

 

 三、Shell脚本入门

1.脚本格式

脚本以#!/bin/bash开头。我们切换到普通用户,创建一个shell脚本

【插入一个点】如果创建一个用户,主目录已经存在,而且不是自己的权限,会导致切换用户之后只显示bash..$不会显示目录。所以需要userdel -r lyb,并且删除/home/lyb这个目录。

 

 

 这个目录属于root当然创建用户切换回出问题

 

 

rm -rf lyb删除目录后,再创建,可以看到lyb这个主目录已经是lyb用户的了,然后切换用户就正常了

  进入lyb目录,vim helloworld.sh

 

  运行。如下图,可以额bash+*.sh或者sh+*.sh文件必须可达(绝对相对路径)或者./*.sh他们的不同点是:bash或者sh运行,是bash或者sh解析器去处理文件,不需要当前用户的执行权限。./  当前用户要运行文件自己执行,是需要当前用户的执行权限的

  这样就可以运行了

2.多命令操作

  比如用上述命令创建日志

3.Shell中的变量

【规则1】变量由字母,数字,下划线组成,不能数字开头,环境变量最好全大写,比如HOME,LB_LIBIARY_PATH等

【规则2】bash中,变量默认为字符串类型

【规则3】变量的值如果有空格,需要用双引号或者单引号括起来。比较长的变量最好用echo $变量名输出

【系统变量】:

$HOME   --当前用户的家目录

$PWD   --当前目录

$SHELL  --当前解释器

$USER  --当前用户

【自己定义变量】:

直接写变量就可以了

  unset --取消变量声明

  静态变量用readonly B=2这样定义

【变量提升】

export 变量名  (全局有效,可以提供给其他程序使用,而不只是本shell脚本或者控制台)

4.特殊变量

就像是一些可替换量

$n

$0表示当前脚本的名字,$1,$2...相当于这个脚本的入参的形式变量

 

如下图,创建的文件名可以用$0表示,$n表示入参且不需要全部都有

 

  $#

表示你输入了几个变量,返回的是一个数字几

$*和$@

都是所有参数,但是有一点区别,*得到的是一个整体,@的到的是单个的参数的列表

$?

如果是0表示上一条命正确执行了,否则表示上条命令报错了。比如fdsa报错,返回127,$0返回127正确执行,再查看返回0

 5.运算符

expr A空格运算符空格B,如下图相当于(2+3)*2

  这样看起来不是很好,所以用

$((运算式))或者$[运算式]都可以

 

posted @ 2020-11-22 23:49  LiuYongbo  阅读(212)  评论(0编辑  收藏  举报
<--将网易云歌单中的id复制到上面的data-id中就可以了 http://music.163.com/playlist?id=3103841025&userid=1698529278 -->