设为首页 收藏本站
查看: 1070|回复: 0

linux之shell基础

[复制链接]

尚未签到

发表于 2018-8-25 14:12:18 | 显示全部楼层 |阅读模式
  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"

  !>  !表示反义词
  命令之间逻辑关系:
  逻辑与:&&
  第一个条件为假时,第二条件不用再判断,最终结果已经有
  第一个条件为真时,第二条件必须得判断
  逻辑或:||
  如果用户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 "\" /etc/passwd &> /dev/null
  RETVAL=$?
  if [ $RETVAL -eq 0 ];then
  USER='grep "\" /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'


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-556469-1-1.html 上篇帖子: shell之1+100-Linux 下篇帖子: shell脚本复习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表