加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell基础及变量符号

发布时间:2020-12-15 18:19:59 所属栏目:安全 来源:网络整理
导读:kernel主要的功能: 1、内存的管理 2、设备驱动程序 3、文件系统的管理 4、进程的管理 5、网络系统 ? vim /etc/profile.d/ profile(主配置文件) .d(子配置文件) ? 添加这个配置文件时,加source ? ? 后台运行脚本 1、bash 脚本名称 ?? (这种用法关掉当前终
kernel主要的功能:
1、内存的管理
2、设备驱动程序
3、文件系统的管理
4、进程的管理
5、网络系统
?
vim /etc/profile.d/
profile(主配置文件)
.d(子配置文件)
?
添加这个配置文件时,加source
?
?
后台运行脚本
1、bash 脚本名称 &?? (这种用法关掉当前终端就停止脚本)
(在命令后加上&是把作业放在后台执行)
2、nohup bash 脚本名称 & (关掉终端不会停止脚本)
3、查看后台运行
jobs
?
停止此种脚本方法
1、直接关掉当前终端
2、ps -aux 找到该脚本的PID ,然后使用kill -9 PID
3、使用jobs命令查看该脚本的序列号,然后使用kill -9 %序列号
?
执行shell有三种方法
1、直接用bash解释器执行
当前终端会新生成一个子?bash 去执行脚本。
2.、添加可执行权限
Linux 系统会去 PATH(环境变量)?里寻找有没有叫?test.sh 的,而只有 /bin,/sbin,/usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
3、source 命令执行,以当前默认 Shell 解释器执行
注:执行shell的命令要以系统所能寻找的路径来执行, ./表示当前目录下
有这个文件才执行
?
source filename 与 bash filename 及./filename执行脚本的区别
?
  • 当shell脚本具有可执行权限时,用bash filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所以”.”是用来表示当前目录的。
  • source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
  • bash filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,子shell新建的、改变的变量不会被带回父shell。子shell继承父shell的环境变量:
子shell新建变量,在父shell中不会生效,但子shell继承父shell的环境变量
使用pstree查看当前bash位置
?
?
?
Shell 变量的命名规范和大部分编程语言都一样:
  • 变量名由数字、字母、下划线组成;
  • 必须以字母或者下划线开头,不能以数字开头
  • 不能使用?Shell?里的关键字(通过?help?命令可以查看保留关键字)。
例:
# name="zgn"???
定义变量时等号左右两边无需空格(否则可能会出现错误)
echo ${name}
zgn
给所有变量加上花括号{ },用于定义变量的边界,这是个良好的编程习惯。
?
使用 unset 命令可以删除变量。语法:
unset name
变量被删除后不能再次使用;unset 命令不能删除只读变量。
?
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
?
2) 环境变量
即全局变量,对所有用户有效。所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
?如果你希望查看当前?Linux?的默认?Shell,那么可以输出?SHELL?环境变量:echo $SHELL
?
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
?
?
?
特殊变量 $0? 当前脚本的文件名 $n? 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,
第一个参数是$1,第二个参数是$2。 如脚本里含有$1,$2 的变量,在执行脚本
的时候脚本并不知道$1,$2 的值 ,可在执行脚本是后面加上参数
例:? #bash 1.sh A B??? ,这里的A即为$1的值? B为$2的值 $#? 传递给脚本或函数的参数个数。 $*? 传递给脚本或函数的所有参数。 $?? 上个命令的退出状态,或函数的返回值。可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 非0 。
#echo $??? 查看返回值 $$? 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
?
?
?
条件表达式
?? ? ? ? [ expression ]?
? ? ? ? ? ? ? ??[ 1 -eq 1 ]
注意:括号中的表达式前后都有空格,否则会报错!
?
?? 整数比较符
?? ? ? ??
? ? ? ? ?描述? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? 实例? ? ? ? ? ? ? ? ? ?
-eq,equal
等于
[ 1 -eq 1 ] 为true
-ne,not equal
不等于
[ 1 -ne 1 ] 为false
-gt,greate than
大于
[ 1 -gt 1 ] 为false
-lt,lesser than
小于
[ 1 -lt 1 ] 为false
-ge,greate or equal
大于或者等于
[ 1 -ge 1 ] 为false
-le,lesser or equal
小于或者等于
[ 1 -le 1 ] 为false
?
字符串比较符
?? 运算符? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?描述? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? 实例? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?==
等于
?[ "a" == "a" ] 为true
? ? ? ? ? ? ? ? ? ?!=
不等于
[ "a" != "a" ] 为false
? ? ? ? ? ? ? ? ? ?-n
字符串长度不等于?0 为真
?VAR1=1;VAR2=""
?[ -n "$VAR1" ]为 true
?[ -n "$VAR2" ]为 false
? ? ? ? ? ? ? ? ? ?-z?
?
字符串长度等于?0 为真
??VAR1=1;VAR2=""
? ?[ -z "$VAR1" ]为false
? ?[ -z "$VAR2" ]为 true
?
文件测试
? ??测试符? ? ??
? ? ? ? ? ? ?描述? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?实例? ? ? ? ? ? ? ??
-e
文件或者目录存在为真
[ -e path ] path 存在为 true
-f
文件存在为真
[ -f file_path ] 文件存在为 true
-d
目录存在为真
[ -d dir_path ] 目录存在为 true
?-r
有读权限为真
[ -r file_path ]file_path有读权限为真
-w
有写权限为真
[ -r file_path ]file_path有写权限为真
-x
有执行权限为真
[ -r file_path ]file_path有执行权限为真
?
布尔运算符
运算符? ? ? ? ? ? ??
? ? ? ? ? ? ? 描述? ? ? ? ? ? ? ??
? ? ? ? ? ? ? 实例? ? ? ? ? ? ? ? ? ? ?
非关系,条件结果取反
[? ! 1 -eq 2 ]为true
-a
和关系,在[]表达式中使用
[ 1 -eq 1 -a 2 -eq 2 ]为true
两者都为真才为真
-o
或关系,在[]表达式中使用
[ 1 -eq 1 -o 2 -eq 1 ]为true
两者有一真则为真
?
整数运算
运算符
描述? ? ? ? ? ? ? ? ?
+
加法
-
减法
*
乘法
/
除法
%
取余
?
?运算表达式? ? ? ? ??
? ? ? ? ? ? 实例? ? ? ? ? ? ? ? ??
$(())
$((1+1))
$[]
$[]
?
其他运算工具
? 命令? ? ? ??
? ? ? ? ? ?描述? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? 实例? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?let
? ? ? ??赋值并运算,支持++、--
let VAR=(1+2)*3 ; echo $VAR
x=10 ; y=5
let x++;echo $x 每执行一次 x 加 1
let y--;echo $y 每执行一次 y 减 1
let x+=2 每执行一次 x 加 2
let x-=2 每执行一次 x 减 2
? ? ? ? ? ? ? ? expr
??乘法*需要加反斜杠转义*
?
expr 1 * 2 ??运算符两边必须有空格
expr ( 1 + 2 ) * 2??使用双括号时要转义
? ? ? ? ? ? ? ? ? bc
?计算器,支持浮点运算、平方等
?bc 本身就是一个计算器,可直接输入命令,进入解释器
echo 1 + 2 |bc 将管道符前面标准输出作为 bc 的标准输入
echo "1.2+2" |bc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读