首页 > 系统相关 >shell脚本学习

shell脚本学习

时间:2022-08-31 16:44:25浏览次数:128  
标签:脚本 文件 shell ... echo 学习 名称 数组

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、函数

标签:脚本,文件,shell,...,echo,学习,名称,数组
From: https://www.cnblogs.com/luozhenfei/p/16643604.html

相关文章

  • Hutool 的学习
    1、......
  • 小技巧:在VBA中查找SAP GUI Scripts 脚本对象层次结构视图
    SAPGUIScript提供了很多功能,单靠录脚本的方法去发现有点不太灵活,查SAP官方的网页也是一种可行的办法。下面介绍通过VBA直接在本地查看,方便快捷。安装好SAPGUI以后,在......
  • 【Xshell】Xshell设置页面显示最大行数
    问题描述:tail查看日志时,出现log行数很多的时候之前的log被冲掉, 解决方法:设置缓冲区大小 ......
  • Mybatis学习笔记(二)
    CRUD:增删改在接口的返回值可以是int也可以是void 查询必须设置结果集:resultType设置成java类(全限定名或别名)resultMap自定义映射,可以一对多或多对一 btw:当结果集......
  • 普林斯顿微积分读本:学习笔记
    目录第1章函数、图像和直线1.5线性函数的图像如果已知直线通过点\((x_0,y_0)\),斜率为\(m\),则它的方程为\(y−y_0=m(x−x_0)\).如果一条直线通过点\((x_......
  • Python学习-Day2
    1、算数运算符/除10/20=0.5//取整数25//10=2%取余数25%10=5"幂 2"4=16*在字符串中计算结果就是字符串重复指定次数的结果eg:......
  • [CLI] Power Shell 删除指定驱动
    场景:开内核隔离CORE-ISOLATION时候发现西数驱动造成无法开启内核隔离,需要删除西数驱动 wdcsam 1.RIGHTclickontheSTARTbuttonandselect WINDOWSTERMINAL......
  • smile——Java机器学习引擎
    资源https://haifengl.github.io/https://github.com/haifengl/smile介绍Smile(统计机器智能和学习引擎)是一个基于Java和Scala的快速、全面的机器学习、NLP、线性代数、......
  • shell中字符串和引号("",''.``的区分)
    场景1:变量为字符串类型,引用变量时添加引号等的区分【概念】变量的引用主要包含四类:双引号引用、单引号引用、反引号引用、反斜线引用""双引号......
  • 【Java学习Day11】变量种类及命名规范
    变量变量是什么:就是可以变化的量Java是一种强类型语言,每个变量都必须声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域typevarNa......