【Shell】part1-Shell-基础入门篇

2024-05-02 08:52
文章标签 基础 shell 入门篇 part1

本文主要是介绍【Shell】part1-Shell-基础入门篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

part1-基础入门

HelloWorld

创建,编写,运行 Shell 脚本

vim test.sh#!/bin/bash
echo "Hello World !"# 1.作为可执行程序运行
chmod a+x ./test.sh  
#使脚本具有执行权限
./test.sh  
#执行脚本# 2.作为解释器参数运行
/bin/sh test.sh
/bin/php test.php

变量

变量赋值

定义变量时,变量名不加美元符号($,PHP语言中变量需要)

your_name="runoob"# 
for file in `ls /etc`for file in $(ls /etc)

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

your_name="qinjx"
echo $your_name
echo ${your_name}# 
for skill in Ada Coffe Action Java; doecho "I am good at ${skill}Script"
done

删除变量

#!/bin/sh
myUrl="https://www.google.com"
unset myUrl
echo $myUrl

变量类型

# 字符串
my_string='Hello, World!'或者my_string="Hello, World!"# 整数
declare -i my_integer=42# 数组# 索引数组
my_array=(1 2 3 4 5)# 关联数组
declare -A associative_array
associative_array["name"]="John"
associative_array["age"]=30# 环境变量
echo $PATH# 特殊变量
特殊变量在 Shell 中具有特殊含义
$0 表示脚本的名称,$1, $2, 等表示脚本的参数。
$
#表示传递给脚本的参数数量,$? 表示上一个命令的退出状态等

Shell字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。


# 单引号
str='this is a string'
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。# 双引号
your_name="runoob"
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
双引号里可以有变量
双引号里可以出现转义字符# 拼接字符串
your_name="runoob"# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
#单引号中变量无效
echo $greeting_2  $greeting_3# 获取字符串长度
string="abcd"
echo ${
#string}   
# 输出 4# 提取子字符串
string="runoob is a great site"
echo ${string:1:4} 
# 从第 2 个字符开始截取 4 个输出 unoo# 查找子字符串
string="runoob is a great site"
echo `expr index "$string" io`  
# 查找字符 i 或 o 的位置输出 4

Shell 数组`

bash支持一维数组(不支持多维数组),并且没有限定数组的大小,支持下标访问.


# 定义数组
array_name=(value0 value1 value2 value3)# 读取数组
${数组名[下标]}
valuen=${array_name[n]}
echo ${array_name[@]}# 获取数组的长度
取得数组元素的个数
length=${#array_name[@]} 或者 length=${#array_name[*]}
取得数组单个元素的长度
length=${#array_name[n]}

注释

# 单行注释就是#
# 多行注释 ': + 空格 + 单引号'
: '
注释内容...
注释内容...
注释内容...
'

Shell 传递参数

使用 $1、$2 等来引用传递给脚本的参数,其中 $1 表示第一个参数,$2 表示第二个参数, $0 为执行文件名

# 编写脚本
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";# 执行脚本
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
特殊字符说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@ ∗ 相同,但是使用时加引号,并在引号中返回每个参数。如 " *相同,但是使用时加引号,并在引号中返回每个参数。如" 相同,但是使用时加引号,并在引号中返回每个参数。如"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

编写脚本

#!/bin/bash
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

执行脚本

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

这篇关于【Shell】part1-Shell-基础入门篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953873

相关文章

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字