Shell 学习笔记

来源:互联网 发布:js获取文件路径 编辑:程序博客网 时间:2024/05/29 19:50

shell可以用来做什么

  • 快速批量处理文件
  • 检测系统性能
  • 快速简单地完成编程

来自菜鸟教程
read可用于读取输入
echo和printf都可以用于输出

很多都没写出来,觉得太多了都写好心累,比较不常用的要用再查好了。

#!

#!/bin/bash# #! 是一个约定的标记,告诉系统这个脚本用什么解释器执行

变量

定义变量时,变量名和等号之间不能有空格

s="hello world"a=1

使用变量时,在变量名前加$符号

s="hello world"echo $secho ${s}# 花括号可选

声明只读变量,用readonly

s="hello world"readonly s

删除变量,用unset(unset命令不能删除只读变量)

unset variable_name

字符串

  • 单引号 : 变量无效 不能出现单引号
  • 双引号 : 变量有效 可以出线转义字符
s="hello \" $s \""# 拼接字符串直接连起来,不用加号s="hello"s"me"# 获取字符串长度用 # 号echo ${#s}# 提取子字符串 s:start:endecho ${s:1:4}# 查找子字符串 index 修改echo `expr index "$s" is`

数组

bash只支持一维数组
数组形式: 数组名=(value1 value2 … valuen)
以空格隔开

# 读取数组元素值echo ${arr[i]}# 获取整个数组echo ${arr[@]}echo ${arr[*]}# 获取数组长度echo ${#arr[@]}echo ${#arr[*]}

传递参数

参数处理 说明 $0 $1 $2 分别为第一、二、三个参数, $0为文件名 $# 传递到脚本的参数个数 $* $@ 以一个单字符串显示所有向脚本传递的参数,不同的是$@每个参数左右会加上双引号 $$ 脚本运行的当前进程的ID号 $! 后台运行的最后一个进程的ID号 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

数学运算

原生的bash不支持数学运算,但可以用其他命令来实现
表达式和运算符之间要有空格
完整的表达式要被“ 包含 加减乘除
条件表达式要放在方括号之间

val=`expr 2 + 2`[$a == $b]

乘号(*)前要加反斜杠(\)才能实现乘法运算

关系和布尔运算

运算符 说明 -eq == -ne != -gt > -lt < -ge >= -le <=
if [$a -gt $b]then echo ">"elsethen echo "<="fi

if

if condition1then    command1elif condition2 then     command2else    commandNfi

for

for var in item1 item2 ... itemNdo    command1    command2    ...    commandNdone

while

while conditiondo    commanddone

until

until conditiondo    commanddone

case

case 值 in模式1)    command1    command2    ...    commandN    ;;模式2)    command1    command2    ...    commandN    ;;esac

也有 breakcontinue

函数

觉得跟其他语言的函数相差不多
举两个例子说明

#!/bin/bash# author:菜鸟教程# url:www.runoob.comfunWithReturn(){    echo "这个函数会对输入的两个数字进行相加运算..."    echo "输入第一个数字: "    read aNum    echo "输入第二个数字: "    read anotherNum    echo "两个数字分别为 $aNum$anotherNum !"    return $(($aNum+$anotherNum))}funWithReturnecho "输入的两个数字之和为 $? !"
#!/bin/bash# author:菜鸟教程# url:www.runoob.comfunWithParam(){    echo "第一个参数为 $1 !"    echo "第二个参数为 $2 !"    echo "第十个参数为 $10 !"    echo "第十个参数为 ${10} !"    echo "第十一个参数为 ${11} !"    echo "参数总数有 $# 个!"    echo "作为一个字符串输出所有参数 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73
0 0
原创粉丝点击