linux之shell基础

简介:

shell编程:

编译器,解释器
编程语言:机器语言、汇编语言、高级语言

静态语言:C C++ JAVA C#  类型(变量)事先转换成可执行格式

编译型语言   开发环境不需要借助额外的二进制程序,直接写代码用编译器将其直接转换为二进制可以独立运行的 

动态语言:解释型语言PHP SHELL python per1 弱类型 不是绝对的 边解释边执行

面向过程:shell C                 解决问题过程
面向对象:java Python per1 C++    定义对象执行的动作

变量:内存空间,命名
内存:编制的存储单元

linux内核就是面向过程的C语言开发的 ,每种语言只有更适应它的地方

变量类型:事先确定数据的存储格式和长度
字符
数值 整型 浮点型11.23 1.123*10^1 
整型:8bit:256
0-256 溢出

变量:
1,10000 
10:16bit
10:1010,8bit

逻辑:1+1>2
逻辑运算:与(相乘)、或(相加)、非、异或(相同为零)
1:真
0:假

shell:弱类型编程语言

强:变量在使用前,必须事先声明,甚至还需要初始化:不一定初始化
    NULL:
弱:变量用时声明,甚至不区分类型
变量赋值:VAR_NAME=VALUE

bash变量类型:
环境变量
本地变量(局部变量)函数
位置变量
特殊变量

本地变量:bash:
VARNAME=VALUE:作用域为整个bash进程
local VARNAME=VALUE:局部变量只对当前代码有效
name=tom
echo "there are some ${name}s."
引用变量:${varname},括号有时可省略
双引号是将变量转换,单引号不作变量转换

局部变量:
local VARNAME=VALUE:作用域为当前代码段

环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
      “导出”
export name=tom

位置变量:
$1,$2,....

特殊变量:
$?:保存上一个命令的执行状态返回值
程序执行:可以能两类返回值:
                           程序执行结果
                           程序状态返回代码(0-255)
                           0:正确执行
                           1-255:错误执行 1、2、127系统预留了
 输出重定向: 
>
>>
2>
2>>                        
/dev/null:软件模拟的设备 ,bit bucket,位桶,理解成:数据黑洞 不显示信息

撤消变量:
unset VARNAME 

查看当前shell中的变量
set 所有变量

查看当前shell中的环境变量
printenv
env
export

animal=pig
animal=$animal:goat
echo $PATH
export PATH=$PATH:/usr/local/apache/bin 添加路径在后面
export PATH=/usr/local/apache/bin:$PATH添加路径在前面

脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前shell环境变量:
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量:

引用变量:${VARNAME},括号有时可省略
a=2
b=3
c=$a+$b
echo $c

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

file /bin/ls 
shebang:指定程序的魔数
必须以#!开头    后面是跟是以什么格式写的路径

which 查看bash的位置

#!/bin/bash   bash在bin目录下
echo "Add user1 successfully." 显示执行成功 

#注释行被忽略的

pwd 查看当前路径
PATH=/root:$PATH 将路径加入环境
chmod u+x 1 添加文件的执行权限
1 执行文件

直接bash 1也可以

条件判断:
如果用户不存在 
             添加用户,给密码并显示添加成功:
         否则
             显示如果已经存在,没有添加

bash中如何实现条件判断?
条件测试类型:
             整数测试
             字符测试
             文件测试

条件测试的表达式:
[ expression ]必须有一个空格 
`expression`关键字
test + expression
 
整数比较():
A=3
B=6
[ $A -eq $B ]
-eq:测试两个整数是否相等:相等,为真;不等,为假
-ne:测试两个整数是否不等:不等,为真:相等,为假
-gt:测试一个数是否大于另一个数:大于,为真;否则,为假
-lt:测试一个数是否小于另一个数:小于,为真;否则,为假
-ge:大于或等于
-le:小于或等于

id tom &> /dev/null && echo "hello,tom"
! id tom3 && useradd tom3
!表示反义词

命令之间逻辑关系:
逻辑与:&&
第一个条件为假时,第二条件不用再判断,最终结果已经有
第一个条件为真时,第二条件必须得判断

逻辑或:||

如果用户user6不存在,就添加用户user6
id user6 || useradd  user6

如果/etc/inittab文件的行数大于100,就显示好大的文件
['wc -l /etc/inittab | cut -d' '-f1' -gt 100 ] && echo "large file."

变量名称:
1.只能包含字母,数字和下划线,并且不能数字开头
2.不应该跟系统中已有的环境变量重名
3.最好做到见名知意

#!/bin/bash
LINES='wc -l /etc/inittab'
echo $LINES
FINLINES=echo '$LINES | cut -d'' -f1'
echo $FINLINES
[ $FINLINES -gt 100 ]&& echo "/etc/inittab is big file"

条件判断,控制结构:(最好用比与或更好理解)

单分支if语句
if 指定判断条件;如果为真执行then 
statement1
statement2
.
.
else 否则
fi   结束

双分支的if语句
if指定判断条件;如果指定为真then
statement1
statement2
.
.
else 否则
statement3
statement4
.
.
fi   结束

USERID='id -u $NAME3'

#!/bin/bash
grep "\<bash$>" /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ];then
USER='grep "\<bash$>" /etc/passwd | wc -1'
echo "The shells of $USER users is bash."
else
echo "No such user."
fi

''引用命令的执行结果

shell中如何进行算术运算表达式
a=2
b=4
1.let 算术运算表达式
let c=$a+$b
2.$[算术运算表达式]
c=$[$a+$b]
3.$((算术运算表达式))
c=$(($a+$b))
4.expr算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
c='expr $a + $b'










本文转自 周小玉 51CTO博客,原文链接:http://blog.51cto.com/maguangjie/1862564,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
33 0
Linux 如何更改默认 Shell
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
80 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
778 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
37 0
|
3月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
4月前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
68 4
|
4月前
|
监控 Shell Linux
在Linux中,如何使用shell脚本进行系统监控和报告?
在Linux中,如何使用shell脚本进行系统监控和报告?