iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux shell知识点有哪些
  • 359
分享到

Linux shell知识点有哪些

2023-06-16 08:06:33 359人浏览 独家记忆
摘要

小编给大家分享一下linux shell知识点有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!入参和默认变量对于shell脚本而言,有些内容是专门用于处理参数的,它们都有特定的含义,例如:/home/shouwang/

小编给大家分享一下linux shell知识点有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

入参和默认变量

对于shell脚本而言,有些内容是专门用于处理参数的,它们都有特定的含义,例如:

/home/shouwang/test.sh para1 para2 para3  $0                      $1    $2    $3  脚本名              ***个参数      第三个参数

其中$0代表了执行的脚本名,$1,$2分别代表了***个,第二个参数。除此之外,还有一些其他的默认变量,例如:

#  代表脚本后面跟的参数个数,前面的例子中有3个参数  $@  代表了所有参数,并且可以被遍历  $*  代表了所有参数,且作为整体,和$*很像,但是有区别  $$  代表了当前脚本的进程ID  $?  代表了上一条命令的退出状态

变量

给变量赋值,使用等号即可,但是等号两边千万不要有空格,等号右边有空格的字符串也必须用引号引起来:

para1="hello world"  #字符串直接赋给变量para1

unset用于取消变量。例如:

unset para1

如何使用变量呢?使用变量时,需要在变量前加$,例如要打印前面para1的内容:

echo "para1 is $para1"  #将会输出 para1 is hello world

或者变量名两边添加大括号:

echo "para1 is ${para1}!"  #将会输出 para1 is hello world!

命令执行

在shell中执行命令通常只需要像在终端一样执行命令即可,不过,如果想要命令结果打印出来的时候,这样的方式就行不通了。因此,shell的命令方式常有:

a=`ls`   #`是左上角~键,不是单引号

或者使用$,后面括号内是执行的命令:

echo "current path is $(pwd)"   #

另外,前面两种方式对于计算表达式也是行不通的,而要采取下面的方式:

echo "1+1=$((1+1))"  #打印:1+1=2

即$后面用两重括号将要计算的表达式包裹起来。

那如果要执行的命令存储在变量中呢?前面的方法都不可行了,当然括号内的内容被当成命令执行还是成立的。要使用下面的方式,例如:

a="ls"  echo "$($a)"

但是如果字符串时多条命令的时候,上面的方式又不可行了,而要采用下面的方式:

a="ls;pwd"  echo "$(eval $a)"v

这是使用了eval,将a的内容都作为命令来执行。

条件分支

一般说明,如果命令执行成功,则其返回值为0,否则为非0,因此,可以通过下面的方式判断上条命令的执行结果:

if [ $? -eq 0 ]  then      echo "success"  elif [ $? -eq 1 ]  then      echo "failed,code is 1"  else      echo "other code"  fi

case语句使用方法如下:

name="aa"  case $name in      "aa")      echo "name is $name"      ;;      "")      echo "name is empty"      ;;      "bb")      echo "name is $name"      ;;      *)      echo "other name"      ;;  esac

初学者特别需要注意以下几点:

  •  []前面要有空格,它里面是逻辑表达式

  •  if elif后面要跟then,然后才是要执行的语句

  •  如果想打印上一条命令的执行结果,***的做法是将 $?赋给一个变量,因为一旦执行了一条命令,$?的值就可能会变。

  •  case每个分支***以两个分号结尾,***是case反过来写,即esac。

多个条件如何使用呢,两种方式,方式一:

if [ 10 -gt 5 -o 10 -gt 4 ];then      echo "10>5 or 10 >4"  fi

方式二:

if [ 10 -gt 5 ] || [ 10 -gt 4 ];then      echo "10>5 or 10 >4"  fi

其中-o或者||表示或。这里也有一些常见的条件判定。

总结如下:

  •   o or 或者,同||

  •  -a and 与,同&&

  •  ! 非

整数判断:

  •  -eq 两数是否相等

  •  -ne 两数是否不等

  •  -gt 前者是否大于后者(greater then)

  •  -lt 前面是否小于后者(less than)

  •  -ge 前者是否大于等于后者(greater then or equal)

  •  -le 前者是否小于等于后者(less than or equal)

字符串判断str1 exp str2:

  •  -z "$str1" str1是否为空字符串

  •  -n "$str1" str1是否不是空字符串

  •  "$str1" == "$str2" str1是否与str2相等

  •  "$str1" != "$str2" str1是否与str2不等

  •  "$str1" =~ "str2" str1是否包含str2

特别注意,字符串变量***用引号引起来,因为一旦字符串中有空格,这个表达式就错了,有兴趣的可以尝试当str1="hello world",而str2="hello"的时候进行比较。

文件目录判断:filename

  •  -f $filename 是否为文件

  •  -e $filename 是否存在

  •  -d $filename 是否为目录

  •  -s $filename 文件存在且不为空

  •  ! -s $filename 文件是否为空

循环

循环形式一,和python的for in很像:

#遍历输出脚本的参数  for i in $@; do    echo $i  done

循环形式二,和C语言风格很像:

for ((i = 0 ; i < 10 ; i++)); do    echo $i  done

循环打印0到9。

循环形式三:

for i in {1..5}; do      echo "Welcome $i"  done

循环打印1到5。

循环方式四:

while [ "$ans" != "yes" ]  do     read -p "please input yes to exit loop:" ans  done

只有当输入yes时,循环才会退出。即条件满足时,就进行循环。

循环方式五:

ans=yes  until [ $ans != "yes" ]  do     read -p "please input yes to exit loop:" ans  done

这里表示,只有当ans不是yes时,循环就终止。

循环方式六:

for i in {5..15..3}; do      echo "number is $i"  done

每隔5打印一次,即打印5,8,11,14。

函数

定义函数方式如下:

myfunc()   {      echo "hello world $1"  }

或者:

function myfunc()   {      echo "hello world $1"  }

函数调用:

para1="shouwang"  myfunc $para1

返回值

通常函数的return返回值只支持0-255,因此想要获得返回值,可以通过下面的方式。

function myfunc() {      local myresult='some value'      echo $myresult  }  val=$(myfunc)  #val的值为some value

通过return的方式适用于判断函数的执行是否成功:

function myfunc() {      #do something      return 0  }  if myfunc;then      echo "success"  else      echo "failed"  fi

注释

shell通过#来注释一行内容,前面我们已经看到过了:

#!/bin/bash  # 这是一行注释  :'  这是  多行  注释  '  ls  :<<EOF  这也可以  达到  多行注释  的目的  EOF

日志保存

脚本执行后免不了要记录日志,最常用的方法就是重定向。以下面的脚本为例:

#!/bin/bash  #test.sh  lll  #这个命令是没有的,因此会报错  date

方式一,将标准输出保存到文件中,打印标准错误:

./test.sh > log.dat

这种情况下,如果命令执行出错,错误将会打印到控制台。所以如果你在程序中调用,这样将不会讲错误信息保存在日志中。

方式二,标准输出和标准错误都保存到日志文件中:

./test.sh > log.dat 2>&1

2>&1的含义可以参考《如何理解linuxshell中的2>&1》

方式三,保存日志文件的同时,也输出到控制台:

./test.sh |tee log.dat

脚本执行

最常见的执行方式前面已经看到了:

./test.sh

其它执行方式:

sh test.sh  #在子进程中执行  sh -x test.sh #会在终端打印执行到命令,适合调试  source test.sh #test.sh在父进程中执行  . test.sh   #不需要赋予执行权限,临时执行

脚本退出码

很多时候我们需要获取脚本的执行结果,即退出状态,通常0表示执行成功,而非0表示失败。为了获得退出码,我们需要使用exit。例如:

#!/bin/bash  function myfun()  {      if [ $# -lt 2 ]      then         echo "para num error"         exit 1      fi      echo "ok"      exit 2  }  if [ $# -lt 1 ]  then     echo "para num error"      exit 1  fi  returnVal=`myfun aa`  echo "end shell"  exit 0

这里需要特别注意的一点是,使用

returnVal=`myfun aa`

这样的句子执行函数,即便函数里面有exit,它也不会退出脚本执行,而只是会退出该函数,这是因为exit是退出当前进程,而这种方式执行函数,相当于fork了一个子进程,因此不会退出当前脚本。最终结果就会看到,无论你的函数参数是什么***end shell都会打印。

./test.sh;echo $?  0

看完了这篇文章,相信你对“Linux shell知识点有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网操作系统频道,感谢各位的阅读!

--结束END--

本文标题: Linux shell知识点有哪些

本文链接: https://www.lsjlt.com/news/282800.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 有哪些Linux shell知识点
    本篇内容主要讲解“有哪些Linux shell知识点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Linux shell知识点”吧!实际上Shell是一个命令解释器,它解释由用户输入的命令...
    99+
    2023-06-09
  • Linux shell知识点有哪些
    小编给大家分享一下Linux shell知识点有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!入参和默认变量对于shell脚本而言,有些内容是专门用于处理参数的,它们都有特定的含义,例如:/home/shouwang/...
    99+
    2023-06-16
  • linux SHELL的知识点有哪些
    本篇内容主要讲解“linux SHELL的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux SHELL的知识点有哪些”吧!alias显示当前所有的命令别名  ali...
    99+
    2023-06-17
  • shell入门知识点有哪些
    这篇文章主要讲解了“shell入门知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell入门知识点有哪些”吧!背景一句话概括就是:shell编程就是对一堆Linux命令的逻辑化...
    99+
    2023-06-28
  • Shell基础知识点有哪些
    今天小编给大家分享一下Shell基础知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Shell 是一个 C 语言编...
    99+
    2023-06-27
  • shell脚本的知识点有哪些
    小编给大家分享一下shell脚本的知识点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!shell 脚本是区分小写的2.Unix特殊字符有: ( ; $ &...
    99+
    2023-06-09
  • linux入门知识点有哪些
    这篇文章给大家分享的是有关linux入门知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux目录架构 / 根目录 /bin 常用的命令 binary file 的目錄 /boot 存放系统启动时必...
    99+
    2023-06-13
  • Linux核心知识点有哪些
    这篇“Linux核心知识点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux核心知识点有哪些”文章吧。1.Lin...
    99+
    2023-06-16
  • Linux磁盘管理和Shell编程知识点有哪些
    这篇文章主要介绍“Linux磁盘管理和Shell编程知识点有哪些”,在日常操作中,相信很多人在Linux磁盘管理和Shell编程知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux磁盘管理和S...
    99+
    2023-06-15
  • linux NFS的知识点有哪些
    本篇内容主要讲解“linux NFS的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux NFS的知识点有哪些”吧!nfs,是network ...
    99+
    2024-04-02
  • Linux shell中必须知道的知识有哪些
    本篇文章为大家展示了Linux shell中必须知道的知识有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我个人很喜欢使用 Linux 系统,虽然说 Windows 的图形化界面做的确实比 Li...
    99+
    2023-06-16
  • Linux挂载的知识点有哪些
    Linux挂载的知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在 Linux 系统中,可以通过挂载的方式来使用一些外部设备,这种情况下需要我们掌握的知识点主要有...
    99+
    2023-06-28
  • Shell常见知识有哪些
    小编给大家分享一下Shell常见知识有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Shell常见知识一、用户登陆进入系统后的系统环境变量$HOME 使用者自...
    99+
    2023-06-09
  • Shell变量知识有哪些
    这篇文章主要介绍Shell变量知识有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多...
    99+
    2023-06-04
  • mysql知识点有哪些
    本篇内容主要讲解“mysql知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql知识点有哪些”吧! 1、同步方式 binlog和pos同步、...
    99+
    2024-04-02
  • JS知识点有哪些
    小编给大家分享一下JS知识点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 暂时性死区只要块级作用域存在let命...
    99+
    2024-04-02
  • Flex知识点有哪些
    这篇文章主要介绍了Flex知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex简介Flex通常是指AdobeFlex,是最初由Macromedia公司在2004...
    99+
    2023-06-17
  • Linux系统基本知识点有哪些
    本篇内容介绍了“Linux系统基本知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 前言Linux是一个开源、免费的操作...
    99+
    2023-06-15
  • Linux系统内存知识点有哪些
    这篇文章主要介绍Linux系统内存知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、走进 linux 内存1、内存是什么?1)内存又称主存,是 CPU 能直接寻址的存储空间,由半导体器件制成2)内存的特点...
    99+
    2023-06-15
  • CSS知识点有哪些
    这篇文章给大家分享的是有关CSS知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、对WEB标准以及W3C的理解与认识 标签闭合、标签小写、不乱嵌套、提高搜索机器...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作