Linux的super super super easy教程 | shell 1

端木鹏
2023-12-01

看Linux里面有哪些shell:cat /etc/shells

sh是曾经的默认解释器(黑白)  bash是现在的默认解释器(彩色 功能多些 好用)

tumx是一个多窗口的工具 也是一个解释器

编程语言的类型:

运行需要看源文件是解释型语言 python shell

运行不需要看源文件是编译型语言 c go

强类型语言和弱类型语言:(类型是否会自动转化)

一般而言,编译器有很少(合理)隐式类型转化的是强类型语言,有较多(过分)隐式类型转化的是弱类型语言

如今将“对隐式类型转换的容忍度“作为强弱类型的分类标准,已经是很多人的共识

弱类型偏向于容忍式类型转换。例如c中间的int类型可以转换成double,

如 在shell中 a=1 b=”20” c=$($a+$b) 不报错且c 的值为21

而强类型不允许

如 在python中:a=1 b=”2” c=a+b 是会报错的 而c=a+int(b) 则不报错

强类型语言:python java

弱类型语言:c JavaScript php shell

定义变量的时候,声明类型

一般而言,在编译器就确定变量类型的是静态类型语言,在运行期才确定变量类型的则是动态类型语言

静态类型语言:需要声明变量的 显性:写出来给你看  c java

动态类型语言:不需要声明变量的 隐形:不写出来看  python javascript php shell

shell:

脚本构成:

脚本声明

(声明用哪种语言写的脚本,指定运行解释器的情况下,这一行可写可不写)

(但若是python文件声明./hello.py就会报错)

(在不接指定解释器的情况下执行,默认会使用声明的解释器去执行,若无声明则是默认)

注释信息

(#开头的为注释行)

(给自己和他人看的,方便日后更新和维护,可以快速搞懂代码里的内容是干什么)

(注释可以不写(如果公司没有要求)如果都看得懂,很容易被替换,写注释需要时间)

可执行语言

执行脚本:

  1. 指定脚本使用那个解释器去执行 如 bash hello.sh
  2. 没有指定使用哪个解释去去运行./hello.sh 默认就会使用Linux系统里的shell去执行

变量:1.下划线命名法(推荐) user_name     

2.驼峰命名法 UserName(大驼峰)userName(小驼峰)

Linux系统里内置的很多变量都是大写的  

自定义的变量:建议小写

shell定义变量的时候等号旁边不能有空格,否则会报错

变量引用的问题:$符号接变量名

echo输出

set 查看所有的变量(环境变量和自定义变量)

如何让局部变量可以成为全局变量:export 变量名(输出这个变量为全局变量)

mv2=”jenny”

bash

echo $mv2

这段代码输出的结果是空 因为变量实在当前bash’里面定义的 当运行一个子进程 这个子进程不存在也没有定义这个变量

在shell里没有定义的变量,是可以直接使用的,但是输出的内容是空值

Shell里面的间接引用:

a=100

echo $aà100

b=a

echo $bàa

b=a

echo ${!b}à100

定义新的变量:变量名要求以英文字母或下划线开头,不能以数字开头,区分大小写,约定俗成为大写,但不强制  等号两边不要空格

尤其是定义字符串 且字符串里面有空格 必须需要用引号

元字符:有特殊作用的字符 能描述其他字符的字符 如! ~ * ?

如 !1297 执行历史第1297行命令

 cd ~xiaofan 进入xiaofan的家目录

Python中引号没区别但是在shell中间引号有区别:

单引号:所见即所得 特殊字符都不起作用

双引号:引号内有些内容以及特殊字符不会被回收

命令替换:将命令的执行结果赋值给变量的方法:

1.$()  如 优先执行小圆括号里的命令  ctime=$(data+%Y%m%d) à推荐使用:因为可以嵌套

2.反引号 ``(波浪符号下面那个)如:ctime=`data+%Y%m%d`à不能嵌套a

 类似资料: