0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

shell脚本本身自带的命令详解

FPGA学姐 来源:FPGA学姐 2023-05-23 09:32 次阅读

除了以文件形式保存在/usr/bin下面的命令,shell脚本中还可以使用shell本身自带的命令,即内置命令

1、:命令

它不做任何处理,并且永远将0作为退出状态码,也被称为空命令(null command),由于空命令返回的退出状态码永远为0,所以它也可以像下面这样用于编写无限循环的控制结构。因此true命令和:命令除了名称不一样,其余都是一样的。

while :     ←-----(本行及以下3行)使用了空命令的无限循环
do            
    处理内容  
done

2、echo/printf

echo命令比较简单不做过多介绍

▼echo命令的选项有-n、-e和-E。-n选项用于设置不让脚本输出行尾的换行符。其实准确来说,echo命令会在参数后面加上一个换行符并将其输出到标准输出中。但是,如果使用了-n选项,echo命令就不会在行尾添加换行符了。

▼printf命令和echo命令不同,不会在输出的行尾添加换行符。如果想输出换行符,需要在格式字符串中显式地添加 。另外,echo命令的-e选项中支持的转义字符也可以在printf中使用。唯一的例外是在输出8进制的ASCII码字符时,echo命令使用的是�nnn,而printf不需要前面的0,写成 nn就可以了。

3、command命令和builtin命令

函数的优先级高于可执行文,在这种情况下,要想执行优先级较低的内置命令或者可执行文件,可以使用内置命令command。command命令的使用方法为“command命令名”,使用它就可以只在内置命令和可执行文件中查找并执行指定的命令。

038bfe58-f8f5-11ed-90ce-dac502259ad0.png

这种情况下,就可以使用command命令或者builtin命令设置执行命令的优先顺序。

4、type命令

type命令用于判断指定的命令的类型。该命令可以输出参数中命令的类型,即别名、保留字、函数、内置命令、可执行文件中的任意一个

▼使用type命令显示别名的详细信息

$ alias ll='ls -l'
$ type ll
ll 是 `ls -l' 的别名

▼使用type命令显示函数的详细信息

$ hello() { echo 'Hello, world!'; }  ←----- 定义 hello 函数
$ type hello
hello 是函数
hello ()
{                        ←----- 函数体的代码
    echo 'Hello, world!'
}

▼将不存在的命令作为参数会报错

$ type xxx
-bash: type: xxx: 未找到

这时,type命令的退出状态码为1。反过来,如果命令存在于那几种类型之中,那么退出状态码为0

5、set命令

▼第1个功能是显示当前shell中的所有变量。如果在执行set命令时没有指定任何参数,那么该命令就会输出当前shell中设置的变量及其值的列表,以及函数名和函数体的列表。

$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
……以下省略……

▼也可以用来显示函数信息像type

▼使用set -o命令显示所有选项的状态

$ set -o
allexport        off
braceexpand      on
emacs            on
errexit          off
……以下省略……

▼使用set命令覆盖位置参数的值

#!/bin/bash
echo "$1, $2, $3, $4"
set 111 222 333
echo "$1, $2, $3, $4"
运行:
$ ./set_parameter.sh aaa bbb ccc ddd
aaa, bbb, ccc, ddd
111, 222, 333,    ←----- set 命令修改了位置参数的内容

6、unset

unset命令用于删除shell中的变量。使用方法为“unset变量名,删以后为空字符串

$ name=miyake
$ echo "name = $name"
name = miyake
$ unset name
$ echo "name = $name"
name =

标记为readonly的变量想删也删不掉

7、input

read命令用于从标准输入读取一行数据,其使用方法如下。

#!/bin/bash
echo 'delete file?'
read input  ←--------- 从标准输入读取 1 行数据并赋值给变量 input
if [[ $input == yes ]]; then
    echo 'DELETE'
else
    echo 'CANCEL'
fi

▼根据键盘的输入执行不同的处理

$ ./read_input.sh
delete file?
yes  ←----- 用户的输入
DELETE

▼将标准输入的内容逐行输出到标准输出

#!/bin/bash
while read line  ←----------- 标准输入的 1 行内容被不断地赋值给变量 line
do
  printf '%s
' "$line"
done

注意事项:read命令会将解析为转义字符。因此后面即使是IFS所包含的字符,也不能实现单词分割的功能。特别是,如果在行尾,那么换行符也会被忽略,这一行和下一行会被当成一行读取。要想禁止这一功能,可以使用-r选项。该选项可以让符号不再具有特殊的含义,即使出现在行尾,这一行也会和下一行保持独立,不会连到一起。

8、wait命令

wait命令用于等待在后台运行的进程的结束。在以后台的方式运行比较耗时的处理时,如果想等待所有处理结束,就可以使用wait命令

#!/bin/bash
./task1.sh &
./task2.sh &
wait
echo finish

9、eval

eval命令可以将参数指定的字符串当作shell的命令行解析并执行

例如eval ls~

ls ~命令会被执行。这和直接在脚本中写入ls ~是一样的

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ASCII
    +关注

    关注

    4

    文章

    169

    浏览量

    34531
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309
  • Shell脚本
    +关注

    关注

    0

    文章

    33

    浏览量

    7912

原文标题:shell脚本基础(六)内置命令

文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一步一步了解并搞懂shell脚本

    Shell脚本并不能作为正式的编程语言,因为它是在Linux的shell中运行的,所以称为shell脚本。事实上,
    发表于 12-06 09:03 333次阅读

    Linux Shell脚本入门到实战详解

    Linux Shell脚本入门到实战详解
    发表于 02-17 15:03 478次阅读

    如何编写Shell脚本命令

    编写Shell脚本命令
    发表于 06-18 14:00

    脚本shell语言的相关资料推荐

    启动、挂起、停止甚至是编写一些程序。shell也是一种脚本编程语言,所谓的脚本编程就是能进行批处理。批处理能提高布局速度,或者在做一些复杂任务是能解决很多效益问题,Shell
    发表于 12-23 06:24

    shell脚本最简明的教程

    Shell脚本,就是利用Shell命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell
    的头像 发表于 10-16 11:27 4355次阅读
    <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>最简明的教程

    Linux命令行和shell脚本编程宝典PDF版电子书免费下载

    在Linux系统中,命令shell脚本是非常重要的内容,它们的功能非常强大,使用它们可以完成各种操作。《Linux命令行和sheell脚本
    发表于 03-20 13:41 0次下载

    如何创建和执行一个简单的Linux shell脚本

     如果您愿意要尝试更长的shell脚本,请将下面的shell脚本(并附加为PDF和ODT文件)复制到文本编辑器中,保存,使其可执行并运行。当您了解更多Linux
    的头像 发表于 11-06 17:28 1.3w次阅读

    Linux命令行与shell脚本编程大全第3版电子书免费下载

    这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分 :Linux 命令行,shell
    发表于 05-08 08:00 0次下载

    Linux系统命令shell脚本实践指南

    Linux系统命令shell脚本实践指南资料下载。
    发表于 06-01 14:47 27次下载

    109个实用shell脚本分享

    Shell脚本,就是利用Shell命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell
    的头像 发表于 03-16 08:58 2261次阅读

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    shell脚本基础知识

    shell脚本是一个文件,里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行(无需编译),shell脚本的本质是
    的头像 发表于 04-17 15:00 714次阅读

    为什么shell脚本中执行命令要加exec?这个exec有什么作用呢?

    正常情况下,如果我们想要在shell脚本中执行一个命令,我们只用将该命令原样写到这个shell脚本
    的头像 发表于 08-21 09:10 1292次阅读
    为什么<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>中执行<b class='flag-5'>命令</b>要加exec?这个exec有什么作用呢?

    shell脚本基本命令

    Shell脚本是一种可执行文件,它包含了一组用某种特定语言编写的命令,这些命令可以被解释器(如bash)执行。以下是一些常见的shell
    的头像 发表于 11-08 10:08 708次阅读

    shell并行调用脚本

    Shell脚本中,可以使用一些技巧来实现并行调用。以下是几种常见的方法: 使用后台进程:在Shell脚本中,可以使用"command2 上述脚本
    的头像 发表于 11-08 10:23 426次阅读