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

linux shell 基本知识

[复制链接]
YunVN网友  发表于 2018-8-22 07:28:51 |阅读模式
3.1     保留变量
  BASH 中有一些保留变量,下面列出了一些:
  $IFS  这个变量中保存了用于分割输入参数的分割字符,默认识空格。
  $HOME  这个变量中存储了当前用户的根目录路径。
  $PATH  这个变量中存储了当前 Shell 的默认路径字符串。
  $PS1  表示第一个系统提示符。
  $PS2  表示的二个系统提示符。
  $PWD  表示当前工作路径。
  $EDITOR 表示系统的默认编辑器名称。
  $BASH  表示当前 Shell 的路径字符串。
  $0, $1, $2, ...
  表示系统传给脚本程序或脚本程序传给函数的第0个、第一个、第二个等参数。
  $#   表示脚本程序的命令参数个数或函数的参数个数。
  $$   表示该脚本程序的进程号,常用于生成文件名唯一的临时文件。
  $?   表示脚本程序或函数的返回状态值,正常为 0,否则为非零的错误号。
  $*   表示所有的脚本参数或函数参数。
  $@   和 $* 涵义相似,但是比 $* 更安全。
  $!   表示最近一个在后台运行的进程的进程号。
3.2    随机数
  a=$RANDOM
  echo $a
3.4     变量的特殊操作
  BASH 中还有一些对变量的简洁、快速的操作,大家还记得 "${var}" 和 "$var" 同样是对变量的引用吧,对 ${var} 进行一些变化就可以产生一些新功能:
  ${var-default} 表示如果变量 $var 还没有设置,则保持 $var 没有设置的状态,并返回后面的默认值 default。
  ${var=default} 表示如果变量 $var 还没有设置,则取后面的默认值 default。
  ${var+otherwise} 表示如果变量 $var 已经设置,则返回 otherwise 的值,否则返回空( null )。
  ${var?err_msg} 表示如果变量 $var 已经设置,则返回该变量的值,否则将后面的 err_msg 输出到标准错误输出上。
  请同学们自己尝试下面的例子:
  #!/bin/bash
  echo ${var?There is an error}
  exit 0
  还有下面一些用法,这些用法主要用于从文件路径字符串中提取有用信息:
  ${var#pattern}, ${var##pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最左侧的串。
  ${var%pattern}, ${var%%pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最右侧的串。
  另外 BASH 2 中还加入下面一些操作:
  ${var:pos} 表示去掉变量 $var 中前 pos 个字符。
  ${var:pos:len} 表示变量 $var 中去掉前 pos 个字符后的剩余字符串的前 len 个字符。
  ${var/pattern/replacement} 表示将变量 $var 中第一个出现的 pattern 模式替换为 replacement 字符串。
  ${var//pattern/replacement} 表示将变量 $var 中出现的所有 pattern 模式全部都替换为 replacment 字符串。
4.2     用 BASH 设计简单用户界面
  BASH 中提供了一个小的语句格式,可以让程序快速的设计出一个字符界面的用户交互选择的菜单,该功能就是由 select 语句来实现的,select 语句的语法为:
  select var in
  
  do
  statments use $var
  done
  #!/bin/bash
  OPTIONS="Hello Quit"
  select opt in $OPTIONS; do
  if [ "$opt" = "Quit" ]; then
  echo done
  exit
  elif [ "$opt" = "Hello" ]; then
  echo Hello World
  else
  clear
  echo bad option
  fi
  done
  exit 0
  #!/bin/bash
  passwd="aka@tsinghua"
  ftp -n localhost hrwang and mjfan are husband\
  >and wife' datafile
  #如果在datafile文件中发现匹配以hrwang开头的行,则在该行下面追加hrwang and mjfan are husband and wif
  sed '1,20y/hrwang12/HRWANG^$/' datafile
  #将1到20行内,所有的小写hrwang转换成大写,将1转换成^,将2转换成$。
  #正则表达式元字符对y命令不起作用。与s命令的分隔符一样,斜线可以被替换成其它的字符。
  另外一个非常有用的重定向操作符是 "-",请看下面这个例子:
  $ (cd /source/directory && tar cf - . )|(cd /dest/directory && tar xvfp - )
  该命令表示把 /source/directory 目录下的所有文件通过压缩和解压,快速的全部移动到 /dest/directory 目录下去,这个命令在 /source/directory 和 /dest/directory 不处在同一个文件系统下时将显示出特别的优势。
  下面还几种不常见的用法:
  n&- 表示将标准输出关闭
  $find /home -name lost* >all_results 2>& 1
  上面这个例子中将首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 all_result 这个文件中
  BASH 中还有一些对变量的简洁、快速的操作,大家还记得 "${var}" 和 "$var" 同样是对变量的引用吧,对 ${var} 进行一些变化就可以产生一些新功能:
  ${var-default} 表示如果变量 $var 还没有设置,则保持 $var 没有设置的状态,并返回后面的默认值 default。
  ${var=default} 表示如果变量 $var 还没有设置,则取后面的默认值 default。
  ${var+otherwise} 表示如果变量 $var 已经设置,则返回 otherwise 的值,否则返回空( null )。
  ${var?err_msg} 表示如果变量 $var 已经设置,则返回该变量的值,否则将后面的 err_msg 输出到标准错误输出上。
  #!/bin/bash
  echo ${var?There is an error}
  exit 0
  还有下面一些用法,这些用法主要用于从文件路径字符串中提取有用信息:
  ${var#pattern}, ${var##pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最左侧的串。
  ${var%pattern}, ${var%%pattern} 用于从变量 $var 中剥去最短(最长)的和 pattern 相匹配的最右侧的串。
  另外 BASH 2 中还加入下面一些操作:
  ${var:pos} 表示去掉变量 $var 中前 pos 个字符。
  ${var:pos:len} 表示变量 $var 中去掉前 pos 个字符后的剩余字符串的前 len 个字符。
  ${var/pattern/replacement} 表示将变量 $var 中第一个出现的 pattern 模式替换为 replacement 字符串。
  ${var//pattern/replacement} 表示将变量 $var 中出现的所有 pattern 模式全部都替换为 replacment 字符串
  用 BASH 设计简单用户界面
  select var in

      do
      statement use $var
      done
      #!/bin/bash
      OPTIONS="hello quit"
      select opt in $OPTIONS; do
      if [ "$opt"="quit"]; then
      echo done
      exit
      elif [ "$opt"="hello" ]; then
      echo hello world
      else
      clear
      echo bad option
      fi
      done
      exit 0
      #!bin/bash
      passwd="aka@tsinghua"
      ftp -n localhost

运维网声明 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-554855-1-1.html 上篇帖子: MongoDB客户端访问 – Shell方式 下篇帖子: shell以及sed awk总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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