以下这些知识是在编写shell程序的时候要用到的,需要的时候可以来查查,来巩固一下吧
shell中的一些扩展字符
• !! 上个命令的所有字符
• !* 一个命令的所有参数
• !^ 上一条命令的第一个参数 
• !$ 上一条命令的最后一个参数 
• !:3 上一条命令的第3个参数
• !:0 命令
• !:x x指示 可以是^ $ x-y * x*(第x个起) x-(不包括$) % n 0
• !n history中的第n条命令,-n表示最后倒数的。
• !?xxx 包含xxx的最后一个命令
• !xxx xxx开头的最后一个命令
• ^string1^string2^ 快速替换。重复上一条命令,将 string1 替换为 string2. 与 ``!!:s/string1/string2/''

修饰符 (Modifiers)
可选的 word 指示器之后,可以出现一个或多个下述 modifiers 的序列,每一个都前缀有 `:'。

h 删除文件名组成的尾部,只保留头部(路径)。
t 删除文件名组成中前面的成分,保留尾部(文件)。
r 删除 .xxx 形式中尾部的后缀成分,保留基本名称部分。
e 删除所有内容,保留尾部的后缀。
p 打印新的命令,但是不执行它。
q 引用替换所得的词,使它不再进行替换。
x 引用替换所得的词,类似与 q, 但是会根据 blanks,空白 和新行符分解为词。
s/old/new/
将事件行中出现的第一个 old 替换为 new。 任何分隔符都可以用来代替
/,最后一个分隔符是可选的,如果它是事件行的最后一个字符。 old 和 new 中的分隔符可以用一个反斜杠来引用。如果 &
出现在 new 中,它将替换为 old。 可以用单个反斜杠来引用 &。如果 old 为空,它将设置为最后替换的 old,
或者,如果前面没有发生过历史替换,就是 !?string[?] 搜索中的最后一个 string。
& 重复上一次替换。
g 使得改变被整个事件行所接受。用于与 `:s' 或 `:&' 结合 (例如,`:gs/old/new/')。 如果与 `:s'
结合使用,任何分隔符都可以用来代替 /, 最后一个分隔符是可选的,如
果它是事件行的最后一个字符。

$ mv foo.{jpeg,jpg}

这个命令将把foo.jpeg改名为foo.jpg。

bash脚本的参数

$0:脚本名字。此变量包含地址,可以使用basename $0获得脚本名称。
$1:第一个参数
$2,$3,$4,$5,…一次类推。

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的ID号
$! 后台运行的最后一个进程的ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示shell使用的当前选项。
$? 显示最后命令的推出状况。0表示没有错误。

================================================

1.得到字符串长度
echo ${#variable}
expr length “$variable”
expr “$variable” : “.*”

e=www; a=e; echo ${!a}; eval echo \$$a

2.查找字符串子串位置
expr index “$variable” “substring”

3.得到字符串子字符串
echo ${variable:position:length}
expr substr “$variable” startposition length

4.匹配正则表达式之匹配长度
expr match “$x” “this”
expr match “$x” “string”

5.字符串的掐头去尾
echo ${variable#startletter*endletter} # #表示掐头,因为键盘上#在$前面,一个表示最小匹配
echo ${variable##tartletter*endletter} 两个表示最大匹配
echo ${variable%startletter*endletter} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配
echo ${variable%%startletter*endletter} 两个表示最大匹配

6.字符(串)的替换
echo ${variable/oldletter/newletter} #替换一个
echo ${variable//oldletter/newletter} #替换所有

7。测试变量是否已经赋值
${variable:-value}
如果变量已经赋值,则使用该变量值。如果变量为空,则使用value。需要注意的是,value并不赋给variable。
${variable:=value}
该表达式上面的区别就是,如果variable为空,则value赋给variable。
${variable:?”customed message “}
变量是否为空,如果为空的话则显示带有系统错误信息

================================================

Bash 测试和比较函数
test expr 和 [ expr ] 是等价的。
test 3 -gt 4 && echo True || echo false
false
必须用 \ 加以转义
[ “abc” \< “def” ];echo $?
0
-a 和 -o 选项使用逻辑运算符 AND 和 OR
[ ! \( “a” = “$HOME” -o 3 -lt 4 \) ]; echo $?
1

不需要对 (( 和 )) 之间的操作符转义
(( w=(y/x) + ( (~ ++x) & 0×0f ) )); echo $? $x $y $w

用 [[ 复合命令,进行通配符测试,包含算术测试
( -d “$HOME” ) && ( -w “$HOME” ) && echo “home is a writable directory”
“abc def d,x” == a[abc]*\ ?d* ; echo $?
| a -gt 2 ; echo $?

在 shell 中用 echo 和 $(( )) 直接进行计算

本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/354457,如需转载请自行联系原作者

巩固shell基础知识相关推荐

  1. 【图文教程】Shell基础知识

    Shell基础知识 1. shell介绍 2. history命令 history主要参数示例: 3. 命令补全和别名 4. 通配符 5. 输入输出重定向 6. 管道符和作业控制 管道符: 作业控制: ...

  2. 3000字扫盲shell基础知识(新手必备)

    目录 shell基础语法之变量 shell 变量命名 shell 变量调用 shell 变量分类 shell 运算符 运算符种类 关系运算符 布尔运算符 字符串运算符 逻辑运算符 文件测试运算符 sh ...

  3. Linux之(5)账户和shell基础知识

    Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...

  4. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  5. linux 运行class文杰,Linux Shell基础知识,你想的到的都在这里

    小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读. 01/Linux 的江湖地位 Linux 作为一个全球用户超过14亿的操作系统,它的强大与神奇就不必多说了,混在IT界 Linux是可以装B ...

  6. Shell 基础知识--细说linux配套视频

    Shell 基础概括 Shell是什么? shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序 ...

  7. shell学习之shell基础知识了解

    一.了解bash shell /etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准 shell. Shel ...

  8. Shell基础知识及字符处理

    1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处 ...

  9. L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件

    主要内容: 1管道符 2作业控制 3 shell变量 4 环境变量配置文件 1管道符和作业控制 管道符 "|", 就是把前面的命令运行的结果丢给后面的命令. 2作业控制 当运行一个 ...

最新文章

  1. 在大厂干了几年开发后,太真实了。
  2. C++逐行读取文本文件的正确做法
  3. 视频直播技术之iOS端推流
  4. gel和react哪个厉害_gel、react、boost三种材料的跑鞋,哪个更强?
  5. Ai写的文章会死掉至少90%的创作者,作为图文自媒体,如何破局?
  6. 惠普服务器bios查看硬件属性,查看硬件信息
  7. oracle全角字符转半角,Oracle 表字段全角字符轉換半角字符辦法
  8. python3.6安装【scrapy】-最保守方法
  9. Error installing bundler:bundler requires Ruby version >= 2.3.0.
  10. showModalDialog的用法
  11. jy-10-SPRINGMYBATIS01——Spring-成恒
  12. 【转载】PowerDomain简介
  13. java烟花代码详细步骤,一文说清!
  14. HWP转Word说明
  15. 推荐使用rpx替代upx的公告
  16. 「5.29 开源市集参与指南」因为相信所以看见
  17. 暑期实训CPU设计(四)
  18. 退役前的做题记录5.0
  19. 服务器主机和显示器怎么连接,主机跟显示器怎么连接
  20. VScode打字特效插件的配置

热门文章

  1. Ayla 物联网平台全面支持主流智能语音系统
  2. datasnap资料
  3. 180多个web和desktop测试用例清单
  4. 2010.11.25感恩节
  5. Command对象应用--增加问卷调查
  6. 通过ODBC连接Oracle
  7. 为迎接祖国60华诞,更换博客页面了!!!
  8. Windows 2003 网络负载均衡的详细配置文档
  9. 将职业教育职业化 - 各IT培训中心必须完成的使命
  10. 容器中运行Fabric区块链网络