看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.下划线命名法(推荐) 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