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

(一)SHELL 笔记

[复制链接]

尚未签到

发表于 2018-8-26 06:55:42 | 显示全部楼层 |阅读模式
  shell是一种解释行动语言,shell是通过大量的系统本身命令集合而成。
  每个脚本在执行的时候要个一个可执行的权限
  chmod u+x   shellscript.sh
  shell中每个命令的执行返回的结果中,如果正确执行返回0 否则将返回一个非零的状态,在命令执行语句之后加上echo $?可以打印退出状态
  在shell变量中分为临时变量和永久变量
  所谓永久变量就是不会随着你的环境的变换而改变变量的意义
  例如:
  #输出当前PATH路径
  echo $PATH
  临时变量只能在环境中有效
  在自定义临时变量中,变量名必须是下滑线和字母开头(大小写均可)
  定义变量(不能有空格):
  Num=100
  [root@localhost ~]# echo $Num
  100
  把命令返回的信息传递给变量
  [root@localhost ~]# Time=$(date)
  [root@localhost ~]# echo $Time
  Fri Aug 16 14:04:38 EDT 2013
  [root@localhost ~]# Time=$(date +%D)
  [root@localhost ~]# echo $Time
  08/16/13
  变量之间的赋值:
  形如 A=$B
  [root@localhost shellscript]# echo $Time
  08/16/13
  [root@localhost shellscript]# Date=$Time
  [root@localhost shellscript]# echo $Date
  08/16/13
  终端打印:
  echo 和 printf
  echo:
  [root@localhost ~]# echo "Welcome to bash "
  Welcome to bash
  (1)不使用引号的echo时,不能在所要显示的文本中是使用分号(;),因为在分号在bash中被用作命令的定界符,所谓定界符就是命令的分割符
  echo hello; hello被看作两个命令
  echo hello 和 hello两个命令
  (2)使用单引号echo时。
  [root@localhost ~]# echo '$Time'
  $Time
  不在显示变量只显示单引号中的所有的字符
  #!/bin/bash
  printf  "%-5s %-10s %-4s\n" No  Name Mark
  printf  "%-5s %-10s %-4s\n" 1   A   10
  printf  "%-5s %-10s %-4s\n" 2   B   20
  printf  "%-5s %-10s %-4s\n" 3   C   30
  [root@localhost shellscript]# sh ./printf.sh
  No    Name       Mark
  1     A          10
  2     B          20
  3     C          30
  在 printf 中和在C语言中类似 -表示左对齐 如果不使用“-”将按照右对齐
  %s %d %c %f 是格式符 \n是换行符
  命令参数要在命令和字符串之间
  echo:
  -e 能够识别转义符信息
  [root@localhost shellscript]# echo "1\t2\t3"
  1\t2\t3
  [root@localhost shellscript]# echo  -e "1\t2\t3"
  1       2       3
  -n 忽略结尾
  [root@localhost shellscript]# echo -n 'hello word'
  hello word[root@localhost shellscript]#
  在bash中每一个变量都是字符串。
  环境变量是未在当前进程中定义,而从父进程
  查看所有的环境变量:
  [root@localhost shellscript]# set | more
  BASH=/bin/bash
  BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login
  _shell:progcomp:promptvars:sourcepath
  BASH_ALIASES=()
  BASH_ARGC=()
  BASH_ARGV=()
  BASH_CMDS=()
  BASH_LINENO=()
  ....
  删除环境变量:
  unset命令主要是用来删除变量和函数
  -f 删除函数
  -v 删除变量
  查看指定PID的环境变量:
  cat /proc/$PID(进程ID号)/environ
  [root@localhost shellscript]# cat /proc/1601/environ
  TERM=linuxPATH=/sbin:/usr/sbin:/bin:/usr/binRUNLEVEL=5runlevel=5PWD=/LANGSH_SOURCED=1LANG=en_US.UTF-8PREVLEVEL=Nprevious=NCONSOLETYPE=vtSHLVL=2UPSTART_INSTANCE=UPSTART_EVENTS=runlevelUPSTART_JOB=rc_=/usr/sbin/vmware-vmblock-fuse[root@localhost shellscript]# cat /proc/1601/environ
  .......
  每个变量之间都是Null(\0)字符来分割
  [root@localhost shellscript]# cat /proc/1601/environ | tr '\0' '\n'
  TERM=linux
  PATH=/sbin:/usr/sbin:/bin:/usr/bin
  RUNLEVEL=5
  runlevel=5
  PWD=/
  LANGSH_SOURCED=1
  .........
  tr : 是替换的命令
  通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。
  tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
  带有最常用选项的tr命令格式为:
  tr -c -d -s [&quot;string1_to_translate_from&quot;] [&quot;string2_to_translate_to&quot;] < input-file
  这里:
  -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
  -d 删除字符串1中所有输入字符。
  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
  2、字符范围
  指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
  [a-z] a-z内的字符组成的字符串。
  [A-Z] A-Z内的字符组成的字符串。
  [0-9] 数字串。
  \octal 一个三位的八进制数,对应有效的ASCII字符。
  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
  tr中特定控制字符的不同表达方式
  速记符含义八进制方式
  \a Ctrl-G  铃声\007
  \b Ctrl-H  退格符\010
  \f Ctrl-L  走行换页\014
  \n Ctrl-J  新行\012
  \r Ctrl-M  回车\015
  \t Ctrl-I  tab键\011
  \v Ctrl-X  \030
  [root@localhost shellscript]# cat abc.txt | tr &quot;abc&quot; &quot;xyz&quot; >new_abc.txt
  [root@localhost shellscript]# cat new_abc.txt
  xyz
  x
  xy
  xz
  xsgysz
  [root@localhost shellscript]# cat abc.txt
  abc
  a
  ab
  ac
  asgbsc
  使用tr命令“统一”字母大小写
  (小写 --> 大写)
  # cat file | tr [a-z] [A-Z] > new_file
  (大写 --> 小写)
  # cat file | tr [A-Z] [a-z] > new_file
  把文件中的数字0-9替换为a-j
  # cat file | tr [0-9] [a-j] > new_file
  删除文件file中出现的&quot;Snail&quot;字符
  # cat file | tr -d &quot;Snail&quot; > new_file
  删除“连续着的”重复字母,只保留第一个
  # cat file | tr -s [a-zA-Z] > new_file
  删除空行
  # cat file | tr -s &quot;\n&quot; > new_file
  删除Windows文件“造成”的'^M'字符
  # cat file | tr -d &quot;\r&quot; > new_file
  或者
  # cat file | tr -s &quot;\r&quot; &quot;\n&quot; > new_file
  【注意】这里-s后面是两个参数&quot;\r&quot;和&quot;\n&quot;,用后者替换前者
  用空格符\040替换制表符\011
  # cat file | tr -s &quot;\011&quot; &quot;\040&quot; > new_file
  把路径变量中的冒号&quot;:&quot;,替换成换行符&quot;\n&quot;
  # echo $PATH | tr -s &quot;:&quot; &quot;\n&quot;


运维网声明 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-556521-1-1.html 上篇帖子: SHELL笔记5 下篇帖子: shell过滤特定内容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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