Shell 学习笔记

shell可以用来做什么

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

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

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

#!

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

变量

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

s="hello world"
a=1

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

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

声明只读变量,用readonly

s="hello world"
readonly s

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

unset variable_name

字符串

  • 单引号 : 变量无效 不能出现单引号
  • 双引号 : 变量有效 可以出线转义字符
s="hello \" $s \""

# 拼接字符串直接连起来,不用加号
s="hello"s"me"

# 获取字符串长度用 # 号
echo ${#s}

# 提取子字符串 s:start:end
echo ${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 ">"
else
then echo "<="
fi

if

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while

while condition
do
    command
done

until

until condition
do
    command
done

case

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

也有 breakcontinue

函数

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

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum$anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值