shell脚本命令小记

news/2024/7/5 7:02:30

echo(选项)(参数)选项

-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

•\a 发出警告声;
•\b 删除前一个字符;
•\c 最后不加上换行符号;
•\f 换行但光标仍旧停留在原来的位置;
•\n 换行且光标移至行首;
•\r 光标移至行首,但不换行;
•\t 插入tab;
•\v 与\f相同;
•\ 插入\字符;
•\nnn 插入nnn(八进制)所代表的ASCII字符;


$( )与${ }的区别:
链接: https://blog.csdn.net/u012129558/article/details/79092948.
${#var}可计算出变量值的长度;


基本语法:https://www.cnblogs.com/yinheyi/p/6648242.html


`dirname $0`和’basename $0’的含义

【`】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。
比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令

【“”】 , 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名) `(倒引号: 表示执行命令) \(转义号: 表示转义), 其余的才表示字符串。
【’‘】, 被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的 三个特殊字符。

在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。

$0:当前Shell程序的文件名
dirname $0,获取当前Shell程序的路径
cd `dirname $0`,进入当前Shell程序的目录

'basename $0’值显示当前脚本或命令的名字


文件表达式
if [ -f file ] 如果文件存在
if [ -d … ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行

整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<

字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)


语法部分

case语句

case 变量 in
PAT1)
    执行语句
    ;;
PAT2)
    执行语句
    ;;
*)
    默认执行语句
    ;;
esac

命令解析
shift
位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。

$$
Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!
Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$?
最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$-
显示shell使用的当前选项,与set命令功能相同
$*
所有参数列表。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
$@
所有参数列表。如"$@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
@ 跟 @ 跟 @*类似,但是可以当作数组用
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。



http://www.niftyadmin.cn/n/3879840.html

相关文章

.NET中的设计模式二:单件模式 选择自 lane_cn 的 Blog

单件模式&#xff08;Singleton&#xff09;是一个非常简单的模式&#xff0c;这是我第一个理解并且能运用的模式。有时候模式的复杂程度并不在于本身&#xff0c;而是由于他的应用目的。最初的时候面对一个模式经常充满了困惑&#xff0c;一个简单的调用为什么要搞的如此复杂&…

一个简明的编译器 选择自 lzmtw 的 Blog

一个简明的编译器多次看到有人提起文本表达式的计算问题&#xff0c;就动手整理以前的代码并加上注释。写一个简单的编译器并不是很复杂的&#xff0c;当中要用到些反射的知识。自已觉得&#xff0c;反射的使用在NET中真是无处不在&#xff0c;使用反射没什么效率不效率的问题&…

java main 方法的理解

文章目录 理解命令行参数用法举例IDEA工具配置参数&#xff08;了解&#xff09; 理解 由于JVM需要调用类的main()方法&#xff0c;所以该方法的访问权限必须是public&#xff0c;又因为JVM在执行main()方法时不必创建对象&#xff0c;所以该方法必须是static的&#xff0c;该…

时间查重方案的设计

时间查重方案的设计项目场景&#xff1a;需求描述&#xff1a;解决方案&#xff1a;  1.处理流程  2.周计划的时间段处理  3.时间段处理和比较总结项目场景&#xff1a; 项目场景&#xff1a;上层下发任务计划&#xff08;包括周计划和日计划&#xff09;&#xff0c;每个计…

社会生活中的著名法则 选择自 muse2008 的 Blog

社会生活中的著名法则 一、马太效应 《新约?马太福音》中有这样一个故事&#xff0c;一个国王远行前&#xff0c;交给三个仆人每人一锭银子&#xff0c;吩咐他们&#xff1a;“你们去做生意&#xff0c;等我回来时&#xff0c;再来见我。”国王回来时&#xff0c;第一个仆…

***常见复杂SQL语句(含统计类SQL)

1、SQL统计某字段的出现次数 比如统计某个表中&#xff0c;姓名出现的次数&#xff1a;select name,count(*) from biao group by name having count(*) > 2 关键是用分组&#xff1a;group by&#xff0c;且经常和聚合函数一起使用 比如&#xff1a;统计用户表中的匿名字段…

C++大师Stan Lippman:我对中国程序员的忠告 www.ASPCool.com

C大师Stan Lippman:我对中国程序员的忠告作者&#xff1a; www.ASPCool.com 时间:2004-9-20 18:07:29 C语言的创立者&#xff0c;斯坦.利普曼(Stan Lippman) 9月17日参加了在北京召开的微软技术大会Tech.Ed2004并做了"The C Binding, Integrating a Static and dyn…

浅析SSL/TLS的会话流程和源码实现

浅析SSL/TLS的会话流程和源码实现一、SSL/TLS的概念二、SSL/TLS的会话交互流程(1) client_hello(2) server_hello certificate sever hello done(3) client key exchange change cipher spec encrypted handshake message(4) new session ticketchange cipher specenvrypte…