shell脚本学习

shell 学习

1、解释器

#!/bin/bash  #是注释符号  #! 是特殊的符号

2、赋权限

chmod 700 fliename
# 没有赋执行权限的文件不能用 ./ 执行 用户,所在组,其他

3、特殊符号解释

~: 回到home目录  
!  执行历史命令   !!执行上一条命令
$   变量中取内容符
+ - * / %  加 减 乘 除 取余
&  后台执行
*  通配符
?  匹配除回车外的一个字符
;  一行执行多条命令用这个分隔
|  管道 上一个命令的输出作为下一个命令的输入 cat filename | grep "abc"
\  转义符
``  命令中执行命令 echo "today is `date +%F`"
''  单引号字符串不能解释变量 echo '$USER' 输出 $USER
""  双引号字符串 echo "$USER"  输出 root
$_  显示最后一个执行的命令
$N  第几个外传的参数

4、shell重定向

>   重定向输入 覆盖原数据
>>  重定向追加输入,在原数据末尾追加
<   重定向输出 wc -l < /etc/passwd
<<  重定向追加输出 fdisk /dev/sda <<EOF ...里面代码第二行顶格写,按交互顺序依次执行... EOF

5、shell数学运算

expr 整数的运算
expr 1 + 1
expr 1 \* 1 乘需要转义,不然会匹配通配符
expr 7 + 1.1 &>/dev/null ; echo $?  后台执行加法运算不管对错输出到回收站,打印是否执行成功(输出0表示成功)

echo $((1*1))  这里乘不需转义
echo $((3**2)) 3的2次方
echo "scale=2;100/3"|bc 保留两位小数

6、常用命令
echo 命令

-n 不换行
-e 把转义的符号特殊处理,不直接输出 例如 echo -e "\t helloworld"

read 命令

默认接受键盘的输入,回车符代表输入结束
例子:read -s -t5 -n7 -p "password: " xxx  后面可用$xxx获取
-p 打印信息
-t 限定时间
-s 不回显
-n 输入的字符个数

7、shell中的数组

1.定义 数组名称=(元素1 元素2 元素3 ...)
2.读取 
    echo ${数组名称[索引]} 某一个元素   
    echo ${数组名称[@]} 所有元素
    echo ${#数组名称[@]} 元素个数
    echo ${数组名称[@]:1} 从索引1开始打印
    echo ${数组名称[@]:1:2} 从索引1开始共打印2个元素

声明一个关联数组
declare -A 数组名称
数组名称[名称]=值

8、流程控制语句
if判断语法
(continue、break 效果不变)

if [ condition ]
  then
      ...
elif [ condition ]
      ...
else
      ...
fi

for循环

for i in r1 r2 r3
  do
    ...
done

for ((i=1;i<10;i++))
  do
    ...
done

case语法

case $VALUE in
1|2)
  echo xxx
;;
3|4)
  echo yyy
;;
*)
  echo zzz
;;
esac

9、运算符与比较
比较运算符

-eq 等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-ne 不等于

字符串比较

==  等于
!=  不等于 
-n  字符串长度是否大于0
-z  字符串长度是否等于0

文件检查与比较

-d  检查文件是否存在且为文件夹
-e  检查文件是否存在
-f  检查文件是否存在且为文件
-r  检查文件是否存在且可读
-s  检查文件是否存在且不为空
-w  检查文件是否存在且可写
-x  检查文件是否存在且可执行

逻辑运算

&&  短路与
||  短路或 
!  非

10、函数

posted @ 2022-08-31 16:40  烟锁池塘柳12F  阅读(46)  评论(0)    收藏  举报