第1节. shell编程脚本基础
编程基础
shell和py都是边解释边执行
gcc是个编译软件,可以把高级语言转换成机器代码
gcc就是编译器
在执行的时候有python解释器,会读到内存里翻译成机器码了。但是这个机器码是在内存里的,不是个放在硬盘里的文件。它是边执行边翻译。
编程基本概念
shell脚本基础
创建shell脚本
脚本规范
脚本的基本结构
vim的初始化
脚本执行的方法1:bash xxx
方法2,source xxx和. xxxx
方法3:添加执行权限
👆直接运行脚本,就是外部命令了,是要到PATH变量里找路径的,而当前目录是/root并不在PATH变量里,所以找不到。
添加到PATH变量
👆其实也可以用ln -s 软连接来实现path变量的
但是如果你以后很多脚本都统一放到/data/scipts下的话,还是加/data/scripts为PATH变量好一点
脚本运行方法4:传递给bash命令
evn.sh,只要是sh后缀就行了。
例子,写个脚本创建用户
让其口令立即过期
chage -d 0 test等价于passwd -e tezt都是修改date of last password chage这个值为0,意思就是登入后强制修改密码
语法错误检查方法
两种语法检查方法
删除if那行后 再次执行就OK了
举个例子
之前接触过%s/xx/yy/g,现在又看到了.,$s/XX/yy/g
.点表示当前行号,逗号是一直到整个文件最后一行
u撤销后,改成
引号替换一下
变量
变量代表着内存空间
内存中的一个地址块放了magedu,而name就表示地址值。于是就是name中存放了magedu。
变量,值可变化,当然也有不可变
python和shell都不需要事先申明变量
变量起名规范
特殊变量
👆变量的正儿八经的写法,很重要
如果此时Y的值变成了30,问X的值是多少,这个在PYTHON里面叫变量赋值,如果是列表、字典是需要.copy()的
变量取消
上图替换语法存在错误
不用加g,%s/xx/yy/g,的g如果是每行只有一个不需要加g全局
一般脚本结束了变量也就没了。不过还是建议删掉。
把命令放到变量里
第一题答案就有了
cp -a 的a等价于-dR
文件夹不存在cp会直接创建的
第二题答案
nl 和 cat -b一个意思,不过不能列出空行行号
环境变量的查看
env和printenv是等价的