shell基础脚本命令记录
关于
shell script
是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。
shell和shell脚本的区别
Shell
就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。
Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;
命令 echo $SHELL
可以查看linux系统的默认解析,当然终端面板上面也显示了
运用
基本使用介绍
- 创建一个.sh(代表shell)为扩展名的文件【扩展名不影响文件的执行,使用js扩展名也行,但是规范扩展名可读性更强】
- 输入代码,第一行一般是
#!/bin/bash
【其中"#!"
是一个约定的标记,告诉系统脚本需要什么解释器来执行,即用哪一种Shell,如果#!
指定指定的解析器不存在 则会使用系统默认的解析器】 - 执行脚本,执行脚本有如下三种形式
bash xxx.sh
执行文件【指明先用bash解析器解析,如果bash不存在才会使用默认解析器】sudo su
获取操作权限,然后在通过. xxx.sh
执行文件【这种方式直接使用默认解析器解析】chmod +x xxx.sh
添加可执行文件,再通过./xxx.sh
执行文件【先按照文件中#!指定的解析器解析,不存在使用默认】
命令行使用
#
# 表示注释当前行,下面是多行注释
:<<EOF
注释内容...
注释内容...
EOF
echo hello
echo命令用于向窗口输出文本。
定义变量名
- 使用变量名=的方式,通过$去引用变量
- 变量名和等号之间不能有空格、只能使用英文字母,数字和下划线,首个字符不能以数字开头
- 中间不能有空格,可以使用下划线 _,不能有标点符号,不能使用bash里的关键字
- unset 变量名 清楚变量
- readonly 变量名 只读变量,不能修改,只能读取
- 使用变量名=的方式,通过$去引用变量
name = 'yan'echo $nameunset name # 清楚变量echo $namereadonly age age = 19 #报错:test.sh: line 19: age: command not foundecho $age
- 字符串相关操作
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 双引号里可以有变量,且可以有转义字符
- 提取字符串${变量:索引1:索引2}
- 获取字符串长度 ${#变量名}
#拼接字符串
name="runoob"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, ${name} !"
echo $greeting $greeting_1 // hello, runoob ! hello, runoob !
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2 $greeting_3 // hello, runoob ! hello, ${name} !
# 提取字符串
string="Yan、yan_yan"
echo "输出:" ${string:1:4} # 输出: an、y
#获取字符串长度
string="yan"
echo ${#string} #输出 4
- 数组变量
- 定义数组,array_name=(value0 value1 value2 value3),括号包裹数组,变量之间使用空格
- 读取数组变量${数组名[下标]}
- @获取数组的所有元素,echo ${array_name[@]},@替换成*也是一样的
arr=(1 4 'yan' 23)
# echo ${arr[2]} # yan
# echo ${arr} # 1
echo ${arr[@]} # 输出全部数组 1 4 yan 23
echo ${arr[*]} # 同上
- 手动输入赋值变量
- 通过 read 的形式可以读取键盘输入的变量值,但只允许后面跟一个变量,否则会报错
- 加参数 -p 则可以一行显示,更好的读取体验
- 通过$0可以获取执行文件名,$1可以获取第一个输入的参数,$2是第二个输入参数,以此类推
read -p "请输入num值:" numecho "输入的变量值是:"$num# 键盘读取多个值read name ageecho "输入的姓名年龄是:$name $age" # 获取输入参数echo $0echo $2echo $1
- 其他特殊字符
- 运算符操作
- 使用``反引号,里面的操作数需要用空格隔开,其中expr 是一款表达式计算工具,使用它能完成表达式的求值操作
- 乘号(*)前边必须加反斜杠()才能实现乘法运算;
- if…then…fi 是条件语句
# 运算符
val=`expr 2 + 2`
echo "两数之和为 : $val"
a=10
b=20
val=`expr $a + $b`
echo "两个变量a + b 之和: $val"val=`expr $a \* $b`
echo "a * b : $val"if [ $a == $b ]
thenecho "a 等于 b"
fi
if [ $a != $b ]
thenecho "a 不等于 b"
fi# 上面的判断最后输出:a 不等于 b
常用算术符号
8. 其他
* $表示取结果。和变量名一起使用表示取变量的值,和()一起使用表示取命令群组的执行结果
* 使用关键字data可获取时间
echo $(date) # 2021年11月30日 星期二 16时43分53秒 CSTecho $(date +%Y%m%d-%H%M%S) # 20211130-164353echo $(ls /) # Applications Library System Users Volumes bin cores dev etc home opt private sbin tmp usr var
参考
https://baike.baidu.com/item/Shell%E8%84%9A%E6%9C%AC
shell基础脚本命令记录相关推荐
- Shell红客脚本命令
Shell红客脚本命令 一.基本Shell命令 二.运行Shell脚本的方法 三.特殊符号Shell命令 四. shell注释 五.shell变量 六. Shell命令printf命令 七.shell ...
- linux shell运行脚本命令行参数,shell脚本命令行参数简介
之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...
- [shell基础]——sed命令
---恢复内容开始--- 关于sed sed 是一种在线编辑器,它一次处理一行内容. 处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着 ...
- shell/bash脚本命令教程
shell/bash其实就是我们日常在unix系统终端中执行的语句,只是通常我们在命令行中都是单行语句执行的,而有时,我们希望将一些操作命令写到一个文本中,让电脑自动按顺序或是并行地执行这些命令, ...
- shell基础--- wc命令
linux shell wc命令 wc命令的功能为统计指定文件中的字节数.字数.行数, 并将统计结果显示输出. 语法:wc [选项] 文件- 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给 ...
- [shell基础]——uniq命令
uniq命令常见选项 去除重复行 -u 显示不重复的行 -d 显示有重复的行 -c 打印每一行重复的次数 测试文本内容如下: # cat 4.tx ...
- Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用...
一.Shell基础应用 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 切换用户的Shell环境 2> 练习命令历史.命令别名 ...
- shell for循环命令行_精心汇总的24道shell脚本面试题
虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...
- shell for循环命令行_24 道 shell 脚本面试题
想要成为中高级phper, shell 脚本是需要掌握的,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么. ...
- shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()
shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...
最新文章
- go linux 源码编译环境,Linux 源码安装 GO 环境
- springboot 单元测试
- vs2015 去除 git 源代码 绑定,改成向tfs添加源码管理
- 【问题记录】RIDE-1.7.3.1控制台及日志中文乱码处理
- android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例
- sqlserver 调优(三)
- ssms的导入功能_SSMS 17中的新增功能; PowerShell和DAX
- Python深度学习(什么是深度学习)----学习笔记(一)
- ubuntu下安装搜狗输入法
- 【Unity】Transform—用代码设置父子关系
- mysql课设体会_课程设计心得体会8篇
- 计算机检索系统常用的运算符,计算机信息检索过程中常用的检索表达式 计算机信息检索系统.doc...
- java获取法定节假日_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
- hadoop的基本命令、java程序处理hd…
- 什么样的人适合学习嵌入式开发
- Android 调整进程的最大fd 数目
- 【学生必备求职指南】好简历是怎样炼成的?毕业生简历实例点评版
- java能开发硬件程序吗,跳槽薪资翻倍
- 【渝粤题库】陕西师范大学210005幼儿教育学作业(高起专)
- 2021年中国纱线行业产量、进出口及经营规模情况分析[图]
热门文章
- 计算机键盘上的tab键是什么键,键盘Tab键有什么作用?
- 外贸出口流程全图(转)
- excel几个数相加等于某个数_Excel如何在一串数字中找出几个之和等于某个特定值...
- 列宽一字符等于多少厘米_Excel中行高多少等于1厘米?列宽多少等...
- ajax不执行回调函数的原因
- ICMP协议的作用是什么?
- Pr全套视频教程 PR 全套零基础从入门到精通视频教程
- img标签中alt属性与title属性
- 3DMax设置长度单位
- 龙芯3A3000上实现BLFS的轻量级桌面LXDE