【Shell编程】4.Shell内建命令

目录

Shell alias命令

Shell unalias命令

Shell echo命令

Shell read命令

代码1

test4_1.sh

运行

结果

代码2

test4_2.sh

运行

结果

代码3

test4_3.sh

运行

结果

Shell exit命令

代码4

test4_4.sh

运行

结果

Shell declare命令

代码5

test4_5.sh

运行

结果

Shell内建命令,是由Bash自身提供的命令,而不是文件系统中的某个可执行文件。

可以使用 type 来确定一个命令是否是内建命令。

type 命令

 Bash Shell 内建命令:

命令说明
:扩展参数列表,执行重定向操作
.读取并执行指定文件中的命令(在当前shell环境中)
alias为指定命令定义一个别名
bg将作业以后台模式运行
bind将键盘序列绑定到一个readline函数或宏
break退出for、while、select或until循环
builtin执行指定的shell内建命令
caller返回活动子函数调用的上下文
cd将当前目录切换为指定的目录
command执行指定的命令,无需进行通常的shell查找
compgen为指定单词生成可能的补全匹配
complete显示指定的单词是如何补全的
compopt修改指定单词的补全选项
continue继续执行for、while、select或until循环的下一次迭代
declare声明一个变量或变量类型。
dirs显示当前存储目录的列表
disown从进程作业表中刪除指定的作业
echo将指定字符串输出到STDOUT
enable启用或禁用指定的内建shell命令
eval将指定的参数拼接成一个命令,然后执行该命令
exec用指定命令替换shell进程
exit强制shell以指定的退出状态码退出
export设置子shell进程可用的变量
fc从历史记录中选择命令列表
fg将作业以前台模式运行
getopts分析指定的位置参数
hash查找并记住指定命令的全路径名
help显示帮助文件
history显示命令历史记录
jobs列出活动作业
kill向指定的进程ID(PID)发送一个系统信号
let计算一个数学表达式中的每个参数
local在函数中创建一个作用域受限的变量
logout退出登录shell
mapfile从STDIN读取数据行,并将其加入索引数组
popd从目录栈中删除记录
printf使用格式化字符串显示文本
pushd向目录栈添加一个目录
pwd显示当前工作目录的路径名
read从STDIN读取一行数据并将其赋给一个变量
readarray从STDIN读取数据行并将其放入索引数组
readonly从STDIN读取一行数据并将其赋给一个不可修改的变量
return强制函数以某个值退出,这个值可以被调用脚本提取
set设置并显示环境变量的值和shell属性
shift将位置参数依次向下降一个位置
shopt打开/关闭控制shell可选行为的变量值
source读取并执行指定文件中的命令(在当前shell环境中)
suspend暂停Shell的执行,直到收到一个SIGCONT信号
test基于指定条件返回退出状态码0或1
times显示累计的用户和系统时间
trap如果收到了指定的系统信号,执行指定的命令
type显示指定的单词如果作为命令将会如何被解释
typeset声明一个变量或变量类型。
ulimit为系统用户设置指定的资源的上限
umask为新建的文件和目录设置默认权限
unalias刪除指定的别名
unset刪除指定的环境变量或shell属性
wait等待指定的进程完成,并返回退出状态码

Shell alias命令

alisa用来给命令创建一个别名。

alias new_name='command'
alias 自定义别名='命令'

        注意: 别名只能在当前Shell进程中使用,在子进程和其它进程中都不能使用。当前Shell进程结束后,别名也随之消失。要想让别名对所有的Shell进程都有效,需要把别名写入Shell配置文件。Shell进程每次启动时都会执行配置文件中的代码做一些初始化工作,将别名放在配置文件中,那么每次启动进程都会定义这个别名。

Shell unalias命令

使用unalias内建命令可以删除当前Shell进程中的别名。

1.删除指定的别名。

unalias 别名

2.删除当前 Shell 进程中所有的别名。

unalias -a

        注意: 这两种方法都是在当前 Shell 进程中生效的。要想永久删除配置文件中定义的别名,只能进入该文件手动删除。

Shell echo命令

echo是Shell内建命令,用来在终端输出字符串,并在最后默认加上换行符。

echo命令输出结束后默认会换行,如果不需要换行,可以加上-n参数。

echo -n "字符串"

        默认情况下,echo不会解析以反斜杠\开头的转义字符,通过添加-e参数来让echo命令解析转义字符。

 echo -e "字符串"

Shell read命令

        read是Shell内置命令,用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认从键盘读取用户输入的数据;如果进行了重定向,就从文件中读取数据。

read [-options] [variables]

 options:选项。

variables:用来存储数据的变量,可以有一个,也可以有多个。

如果没有提供变量名,那么读取的数据将存放到环境变量REPLY中。

Shell read命令支持的选项:

选项说明
-a array把读取的数据赋值给数组array,从下标0开始。
-d delimiter用字符串delimiter指定读取结束的位置,而不是一个换行符(读取到的数据不包括delimiter)。
-e在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。
-n num读取num个字符,而不是整行字符。
-p prompt显示提示信息,提示内容为prompt。
-r原样读取(Raw mode),不把反斜杠字符解释为转义字符。
-s静默模式(Silent mode),不会在屏幕上显示输入的字符。常用于输入密码。
-t seconds设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么read将会返回一个非0的退出状态,表示读取失败。
-u fd使用文件描述符fd作为输入源,而不是标准输入,类似于重定向。

代码1

test4_1.sh

通过键盘输入信息。

#!/bin/bash

read -p "输入信息 > " name ShenGao age
echo "名字:${name}"
echo "身高:${ShenGao}"
echo "年龄:${age}"

给予可执行权限。

chmod 777 test4_1.sh

运行

./test4_1.sh

结果

        注意:必须在一行内输入所有的值,不能换行,否则只能给第一个变量赋值,后续变量都会赋值失败。

 

代码2

只读取一个字符。

test4_2.sh

#!/bin/bash

read -n 1 -p "输入字符 > " char
printf "\n"  #换行
echo $char

给予可执行权限。

chmod 777 test4_2.sh

运行

./test4_2.sh

结果

代码3

只读取一个字符。

test4_3.sh

#!/bin/bash

read -t 20 -sp "20秒内输入密码:" pass1 && printf "\n"      #第一次输入密码
read -t 20 -sp "20秒内再次输入密码:" pass2 && printf "\n"  #第二次输入密码

if [[ ${pass1} == ${pass2} ]]   #判断两次输入的密码是否相等
then
    echo "密码相同"
else
    echo "密码不同"
fi

给予可执行权限。

chmod 777 test4_3.sh

运行

./test4_3.sh

结果

Shell exit命令

        exit是一个Shell 内置命令,用来退出当前Shell进程,并返回一个退出状态;使用$?可以接收这个退出状态。

        exit命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是0。一般情况下,退出状态为0 表示成功,退出状态为非0 表示执行失败(出错)了。exit退出状态只能是一个介于 0~255 之间的整数,其中只有0表示成功,其它值都表示失败。Shell进程执行出错时,可以根据退出状态来判断具体出现了什么错误。

代码4

test4_4.sh

#!/bin/bash

echo "befor exit"
exit 8
echo "after exit"

给予可执行权限。

chmod 777 test4_4.sh

运行

./test4_4.sh

结果

Shell declare命令

declare是 Shell 内建命令,用来设置变量的属性。

declare [+/-] [aAfFgilprtux] [变量名=变量值]

        -表示设置属性,+表示取消属性,aAfFgilprtux表示具体的选项。 -表示设置属性,+表示取消属性,aAfFgilprtux表示具体的选项。

选项含义
-f [name]列出之前由用户在脚本中定义的函数名称和函数体。
-F [name]仅列出自定义函数名称。
-g name在 Shell 函数内部创建全局变量。
-p [name]显示指定变量的属性和值。
-a name声明变量为普通数组。
-A name声明变量为关联数组(支持索引下标为字符串)。
-i name将变量定义为整数型。
-r name[=value]将变量定义为只读(不可修改和删除),等价于 readonly name。
-x name[=value]将变量设置为环境变量,等价于 export name[=value]。

代码5

将变量声明为整数并进行计算。

test4_5.sh

#!/bin/bash

declare -i m n ret  #将多个变量声明为整数
m=10
n=20
ret=${m}+${n}
echo ${ret}

给予可执行权限。

chmod 777 test4_5.sh

运行

./test4_5.sh

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值