侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

bash shell的内建命令

2023-12-11 星期一 / 0 评论 / 0 点赞 / 107 阅读 / 2363 字

内建命令是在当前bash下执行的,会对当前环境和subshell产生影响,而不是内建命令,bash会fork一个subshell来执行,为什么要内建命令,因为bash的subshell不会对父shel

内建命令是在当前bash下执行的,会对当前环境和subshell产生影响,而不是内建命令,bash会fork一个subshell来执行,为什么要内建命令,因为bash的subshell不会对父shell产生影响,这样造成的结果是如cd命令,如果执行cd命令是在bash的subshell中执行,那么,并不会改变父shell的目录,这就不能完成切换目录的目的了。

你也可以使用enable命令打开或者关闭内建命令,内建命令总共有50多个,比较常用的有source . read mapfile和readarray(一个命令的两种写法,功能是将一个文本直接变成一个数组,每行作为数组的一个元素)echo printf jobs sleep fg bg disown(使一个jobs作业控制进程脱离jobs的控制,成为一个“野”进程)trap suspend exit exec logout wait

命令行参数的处理getopts,实现如-a、-b、-c n的功能,e:表示这个参数后面是有变量值的,后面的变量用$OPTARG获取。

#!/bin/bashwhile getopts "abc:de:f" argdo  case $arg in    a)    echo "aaaaaaaaaaaaaaaaaaaaaa"    ;;    b)    echo "bbbbbbbbbbbb"    ;;    c)    echo "c:arg:$OPTARG"    ;;    d)    echo "ddddddddddddddd"    ;;    e)    echo "e:arg:$OPTARG"    ;;    f)    echo "fffffffffffffffffffffff"    ;;    ?)    echo "$arg:no this arguments!!!" esacdone

还有如alias、unalias、cd、declare、typeset、dirs、enable、export、hash、history、popd、pushd、local、pwd、set、unset、shopt、ulimit、umask、eval、trap(信号命令)

set是用来调试脚本的时候设置参数用的

  • -v 表示可视模式,效果就是在执行bash的时候会把将要执行的内容也打印出来
  • -x (Xtrace)跟踪模式,跟踪各种语法的调用,并打印出输出的结果
  • -n 用来检查bash的语法错误,并不会真正执行bash脚本。
    这三个参数既可以放在shebang后面,也可以放在程序中你需要的地方。

查看一个命令是不是内建命令,使用type command,可以直接看到返回的结果

type trap
trap 是 shell 内建
type find
ind 是 /usr/bin/find

广告 广告

评论区