shell笔记

纯粹摘抄于菜鸟笔记,以便备忘

#!/bin/bash  
##! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
chmod +x ./test.sh  #使脚本具有执行权限
#运行方式
./test.sh  #执行脚本
#要用 ./test.sh 告诉系统说,就在当前目录找,没有./则在PATH 里寻找
/bin/bash test.sh

#分号表示语句的结束,每行的末尾分号可省略
#忽略多余的空格,但变量赋值时不能有空格

#变量
#变量命名规范,字母开头,可有_,用$进行引用,{}仅起识别变量作用
# readonly -只读 unset-删除变量

#字符串
#字符串可以用单引号,也可以用双引号,也可以不用引号
#单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,且不能里面不能有单引号
#双引号里可以有变量,双引号里可以出现转义字符
#字符串相关api  
#    #v-长度,v:1:4-截取

#expr 语句

#数组
#用括号来表示数组,数组元素用"空格"(也可以是换行)符号分割开,引用数组  ${数组名[下标]},当前只支持一维数组
#引用  ${arr[@]}, ${arr[*]}引用全部,${arr[n]}  引用单个
#数组相关api
#   ${#array_name[@]}或{#array_name[@]}数组长度  ,${#array_name[n]} 单个数组长度

#传递参数
#执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n,从1开始(不是从0开始)
#相关api   $#-脚本参数的个数 ,  $*-所有参数("$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数)
# $$-脚本运行的当前进程ID号,$!-最后一个进场id ,$@-同  $*  ,$-  -同set ,$?-显示最后命令的退出状态,0表示没有错误
# $* 与 $@ 区别:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而  
#  "@" 等价于 "1" "2" "3"(传递了三个参数)

#基本运算符
#原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用
#expr 语法 `expr 2 + 2` 中间运算符支持+-*/%...等基本运算,运算符两侧要有空格,*要有转义符
#关系运算符仅支持数字,-eq,-ne,-gt,-lt,ge,le  (注意[  a -eq b ]中的空格,运算符两侧有空格,中括号前后也有空格)
#boolean 运算符 !,a,o,&&,||
#字符串运算符  =,!=,-z(长度是否为0),-n(长度是否不为0,对空字符串失效),str(是否为空)

#文件运算符
# -d(是否为目录),-f(是否为文件),-r(是否可读),-w(是否可写),-x(是否可执行),-s(文件大小是否大于0),-e(是否存在)

#echo
# 默认结尾换行  ,-e 开启转义,\c-不换行,\n换行
#printf 默认不换行,支持替换符号:%s %c %d %f,操作对象为字符串,可家单引号或双引号或不加
#%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),如果不足则自动以空格填充,超过也会将内容全部显示出来
#%-4.2f 指格式化为小数,其中.2指保留2位小数

#转义符
#  \a-	警告字符,通常为ASCII的BEL字符,\b-后退,\c-忽略之后(换行或其他字符),\f-换页(formfeed),\t	-水平制表符..

#test
#参照基本运算符,码中的 [] 执行基本的算数运算

#流程控制
# 条件 if condition1;then command1;elif condition2;then command2;else commandN;fi
#for循环 for var in arr;do command;done
#while 循环 while condition;do command;done
#until循环 until condition;do command;done
#无限循环 for (( ; ; ))    ; while true;do command;done     ;  while :;do command;done     ; 
#case语句 case  var in 1) echo 1;;2) echo 2;;*)echo 3;;esac           ;;结束符
#break;;跳出循环  continue;;跳出当前循环

#函数
# function meth_name(){}
#没有返回值将返回最后一条命令运行结果,用$?获取返回值

#输入\输出重定向
#   command > file -输出重定向(覆盖),command >> file 追加,n  > file (0-stdin 标准输入,1-stdout 标准输出,2-stderr错误输出) 
# n >> file -追加, n>&m-输出合并, n<&m-输入合并, <<tag 在开始标记 tag 和结束标记 tag 之间的内容作为输入
# $ command > /dev/null  不输出

#文件包含
#. filename或source filename (注意两者中间有空格)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值