ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

初见shell

2021-03-07 22:59:18  阅读:112  来源: 互联网

标签:脚本 Shell 变量 用户 sh shell 初见


什么是shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

Shell脚本应用场景

1.重复性操作
2.交互性任务
3.批量事务处理
4.服务运行状态监控
5.定时任务执行

Shell 环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux 的 Shell 种类众多,常见的有:

Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
#!/bin/sh
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

实验

在这里插入图片描述
在这里插入图片描述

执行shell脚本

指定相对路径:./first.sh
要有权限
指定Shell来解释脚本,不要求文件必须有x权限。
1 sh命令
sh脚本路径: sh first.sh

2 source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令不需要x权限,也需要使用相对路径或绝对路径。
source脚本路径:. first.sh或者source first.sh(使用当前shell环境执行脚本文件,目录发生变化)
在这里插入图片描述

Shell重定向

1、交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

在这里插入图片描述

重定向

在这里插入图片描述

Shell的变量

1、变量的作用
用来存放系统和用户需要使用的特定参数(值)

变量名使用固定的名称,由系统预设或用户定义

变量值:能够根据用户设置、系统环境的变化而变化

2、变量的分类
自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置工作环境
位置变量:通过命令行给脚本程序传递参数
预定义变量:Bash中内置的一类变量,不能直接修改

定义新的变量

在这里插入图片描述

查看变量

在这里插入图片描述

赋值时使用引号

在这里插入图片描述

在这里插入图片描述

从键盘输入内容为变量

在这里插入图片描述
或者
在这里插入图片描述

设置全局变量

一般情况下,新的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子shell环境时,变量无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量值
在这里插入图片描述

整数变量的运算

在这里插入图片描述

shell的其他变量

环境变量

由系统提前创建,用来设置用户的工作环境
配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)
在这里插入图片描述
只读变量
在这里插入图片描述
在这里插入图片描述
预定义变量
表示命令或脚本要处理的参数。
$*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
$@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立 的,代表"$1" “$2” “$3” “$4”。
$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。

浮点运算

bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc, awk处理。
bc
在这里插入图片描述
awk
在这里插入图片描述

标签:脚本,Shell,变量,用户,sh,shell,初见
来源: https://blog.csdn.net/The_Godof_war/article/details/114490951

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有