shell-常见命令与拓展

命令

: 命令,空命令,返回值为 1,相当于true的别名 while : 相当于 while true

. 命令,用于在当前shell中执行命令 通常,一个脚本执行一条外部命令或脚本程序时,会创建一个新的环境(一个子shell),(.)命令可以使脚本保持当前脚本执行,常用于设置当前脚本的环境变量

echo 命令,默认输出带换行的字符串,若不需要换行,使用echo -n 但不是所有的shell都支持

不换行的场合,建议用printf

eval 命令,在变量名前加 eval, 输出的是变量所存储的值

exit 命令,0表示执行成功 1-125可以被程序自定义使用, 126 文件不可执行 127 命令未找到 128及以上 出现一个信号

export 命令, 将作为它参数的变量导出到子shell中,并使之在子shell中有效。export将自己的参数创建为一个环境变量,而这个环境变量可以被当前脚本调用的其他脚本和程序看见

set -a 或 set -o all 命令将导出它之后声明的所有环境变量

expr 命令,将它的参数当做一个表达式来求值

printf 命令 语法 printf "format string" parameter1 parameter2 …

但格式化字符串不支持浮点数的输出,格式化字符串中除了%和\之外,所有的字符都按照原样输出

return 函数返回值,无return时,默认返回最后一条命令的退出码

set 命令,为shell设置参数变量,可以结合 $(…)进行参数分割 参数为字符串(不同参数间按照空格区分),通过

set $(…)

echo $2 可以取得第二个参数

set -x 让一个脚本程序跟踪显示它当前执行的命令

shift(参数前移) trap(响应按键中断) unset(从环境中删除变量或函数)

find 命令,搜索文件

find [path] [option] [tests] [actions]

grep 命令,在文件中搜索字符串,通用正则表达式解释器

grep [options] PATTERN [FILES]

(`…`)或 $(…)命令 捕获命令的执行,如果需要捕获一条命令的执行结果,并它用在shell脚本程序中

拓展

1.算数拓展

完成算数运算,使用$((…)) …表示要求值的表达式

2.参数拓展

处理要传入shell或脚本的参数 进行自动化的替代字符串(p60)

here文档

向一条命令传递输入的一种特殊方法,允许一条命令在获得输入数据时好像在读取一个文件或键盘

以<<开头 紧跟一个特殊的字符序列,改序列在文档末尾再次出现

cat <<!FUNKY!

hello

this is a here document

!FUNKY!

输出是

hello

this is a here document

shell调试

 

跟踪错误的主要方法是设置各种shell选项或使用echo来 显示变量内容

 

p63 表格2-21 在调用shell时加上命令行选项或使用set命令

命令行选项

set选项

说明

sh -n <script>

set -o noexec

set -n

只检查语法错误,不执行命令

sh -v <script>

set -o verbose 

set -v

在执行命令前回显它们

sh -x <script>

set -o xtrace

set -x

在处理完命令后回显它们

sh -u <script>

set -o nounset 

set -u

如果使用了未定义的变量,就给出出错消息

posted @ 2020-01-14 15:54  MrWang_tju  阅读(177)  评论(0编辑  收藏  举报