shell脚本语句可以执行linux的操作语句。
linux相当于网页,shell相当于java。可以解释编写执行逻辑。
shell的开头以:#!bin/sh
定义解析方式,不同的linuxe内核解释方式不同。大多数内核支持sh(bash)方式。
执行sh文件可以有多种方式:
sh a.sh
bash a.sh
a.sh
嵌套式执行,类似开辟一个线程,出现执行无效,子线程改变的东西,父线程未发生改变。
source a.sh
. a.sh
当前线程直接执行
你没看错,有这么多中方式。
linux中存在环境变量的说法,和win一样。
其中,子bash(一下为子、父线程)中,是无法使用父线程的局部环境变量的。
在子线程中修改父线程的环境变量,返回父线程,父线程的环境变量没有改变。
env查看所有的全局环境变量。
使用win的cmd远程登录ssh:ssh -p 22 root@162.14.112.7
shell中的变量定义:
直接a=12,a="123"
很简单,使用加$a, 直接定义的变量是局部的,使用: export quxiao提高成全局,所有bash都可以使用、但是更改无效,只能更改局部的(就近原则嘛)。
子线程创建的局部变量,父线程无法使用。
撤销变量:
unset quxia
提高变量为全局:
readonly a
设置全局PQTH变量:
修改/etc/profile
加上需要添加的语句:
注意!一定要慎重修改,不要把已有的PATH路径覆盖了,不然所有命令都用不了了。
凡是能够直接在终端执行的命令,都在bin目录下能够找到。
运行文件时,也可以将参数传到文件中去,加上空格 参数。
其中 echo $1是将第一个参数拿出,以此类推。
echo $#是将参数的总个数
echo $* 是将全部参数当做字符串拿出。
echo $@ 将参数拿出为数组。
需要进行数据运算时,方法有好几种,我就记录最方便的一种:
a=$[1+1]
使用$中括号进行赋值,然后我们可以使用调用时传入参数,做一个类似计算的方法(.sh文件)
#!bin/bash
sum=$[$1+$2]
echo sum=$sum
一旦使用的$n拿取参数,就必须传指定个数的参数,找不到参数会报错。
还有一些奇奇怪怪的变量:
- $$ //当前进程的进程号码(PID)
- $! //后台运行的最后一个进程的进程号
- $? //最后一次执行命令的返回状态,如果这个变量的值为0证明上一个命令正确执行,如果不是 0 上一个命令没有正确执行
进行逻辑判断是,无法直接使用><=这些,将这些逻辑弄成了sh方法:
-lt 小于 -le 小于等于
-gt 大于 -ge 大于等于
-eq 等于 -ne 不等于
判断文件其权限:
-w 写
-r 读
-x 执行
case 选择语句:
for循环就及比较独特:
经典1+n