shell(一)

shell 既是脚本语言又是应用程序
查看自己linux系统的默认解析:echo $SHELL
在这里插入图片描述创建第一个shell 文件

touch 01.sh

编辑

vi 01.sh

01.sh 文件内容

#!/bin/bash
echo 'felicia'

保存 按Esc 然后输入:wq

定义以开头:#!/bin/bash

#!用来声明脚本由什么shell解释,否则使用默认shell

添加文件可执行权限

chmod +x 01.sh

运行

三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)

./xxx.sh :先按照 文件中#!指定的解析器解析 指定解析器不存在 使用系统默认解析器

bash xxx.sh:指明先用bash解析器解析 bash不存在 才会使用默认解析器
. xxx.sh 默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的

变量

#!/bin/bash
echo 'felicia'
age=18
echo $age
#unset 清除变量
unset age
echo $age

read 接收输入的值

#!/bin/bash
age=18
echo "age=$age"
echo "请输入age的值"
read age
echo "age=$age"

read`命令的选项包括:

-d:指定输入行的结束标志。
-p:在输入前打印提示信息。
-e:允许在输入时使用命令补全功能。
-n:指定输入文本的长度。
-t:指定读取等待时间为指定的秒数。
-r:允许输入包含反斜杠。
-a:把输入行按空格分割并存入数组。
-p “text”:打印提示信息(text),等待输入,并将输入存储在变量中。
-d “:”:用冒号作为输入行的结束标志。

可以通过read --help 查看
read 读取多个数据 read age2 age3

read age2 age3
echo "age2=$age2"
echo "age3=$age3"

只读变量

readonly num=10
echo "num=$num"
num=18
echo "num=$num"

在这里插入图片描述
查看环境变量 env

aaa=19
#将aaa 设为系统变量
export aaa
#查找系统变量
env | grep aaa
#定义并设置系统变量
export bbb=22
env |grep bbb

ccc=23
#查找 用户变量和系统变量
set |grep ccc

echo:显示某个环境变量值
expor:设置一个新的环境变量
env:显示所有环境变量
unset:清除环境变量
set:显示本地定义的shell变量和环境变量

$0 当前执行的Shell脚本的文件名
$1-$9 当前Shell脚本的参数1-9
$# 当前Shell脚本的参数数量
$? 上一次执行的命令的退出状态
$* 所有当前Shell脚本的参数,作为一个单独的字符串
$@ 所有当前Shell脚本的参数,作为多个独立的字符串
$! 上一次在后台运行的任务的进程ID
$$ 当前Shell脚本的进程ID
$- 当前Shell使用的选项(标志)
$IFS Shell脚本中用于指定字段分隔符的值

#!/bin/bash

echo "Script name: $0"
echo $0
echo "第1个参数:$1"
echo "第2个参数:$2"
echo "参数个数:$#"
echo "所有参数:$*"
for i in "$*";do
        echo $i
done
echo "所有参数:$@"
for i in "$@";do
        echo $i
done

在这里插入图片描述
日期

#!/bin/bash
echo "当前日期`date`"
#echo "未来日期:`date -d +1 hour`"
date -d "+1 hour" +"%Y-%m-%d %H:%M:%s"

-e 转义

echo -e "###\n####"

在这里插入图片描述
()由子shell完成 子shell 不会影响当前shell 的值

#!/bin/bash
num=18
(
num=22
echo "()里num=$num"
)
echo “当前num=$num

在这里插入图片描述
()由当前shell完成

#!/bin/bash
num=18
{
num=22
echo "()里num=$num"
}
echo “当前num=$num

在这里插入图片描述
判断变量是否存在

#!/bin/bash
num=100
if [ -v num ];then
        echo "变量存在"
else
        echo "变量不存在"
fi

操作字符串

#!/bin/bash
str="felicia_jammy_lili"
echo "str长度${#str}"
#从下标为4的位置开始提取
echo ${str:4}
#从下标为4的位置提取长度为3字节
echo ${str:4:3}
#替换第一个出现的字符 ${str/旧字符/新字符}
echo ${str/_/:}
#替换所有字符  ${str//旧字符/新字符}
echo ${str//_/:}

在这里插入图片描述
文件测试运算符
-b (file) 检测文件是否是块设备文件,如果是,则返回true,举例:[-b $file]返回false
-c file 检测文件是否是字符设备文件,如果是,则返回true,举例:[-c $file] 返回false
-d file 检测文价是否是目录,如果是,则返回true。举例:[-d $file] 返回false
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true。举例:[-f $file] 返回true
-g file 检测文件是否设置了SGID位,如果是,则返回true。举例:[-g $file] 返回false
-k file 检测文件是否设置了粘着位(sticky bit),如果是,则返回true。举例:[-k $file] 返回false
-p file 检测文件是否是有名管道,如果是,则返回true。举例:[-p $file] 返回false
-u file 检测文件是否设置了SUID位,如果是,则返回true。举例[-u $file] 返回false
-r file 检测文件是否可读,如果是,则返回true. 举例:[-r $file] 返回true
-w file 检测文件是否可写,如果是,则返回true。举例:[-w $file]
-x file 检测文件是否可执行,如果是,则返回true。举例:[-x $file] 返回true
-s file 检测文件是否为空(文件大小是否大于0),不为空返回true。举例:[-s $file] 返回true
-e file 检测文件(包括目录)是否存在,如果是,则返回true,举例:[-e $file] 返回true

#!/bin/bash
read -p "请输入文件名" file_name
[ -e $file_name ]
echo $?

Shell还提供了与( -a , &&)、或( -o, || )、非( ! )三个逻辑操作符用于将测试条件连接起来,优先级从高到低依次为:”!”,”-a”,”-o”。

test -e是一个Shell内置命令,用于检查文件是否存在。如果文件存在,test -e命令返回0,表示真(true)。如果文件不存在,返回1,表示假(false)。
-e是test命令的一个参数,表示检查文件存在性。
-o是逻辑运算符,表示逻辑“或”。

#!/bin/bash
#检查011.sh文件是否存在,如果不存在,则检查./bash目录是否存在。
if test -e 011.sh -o -e ./bash
then
        echo "至少有一个文件存在"
else
        echo "两个都不存在"
fi

-d file 检查file是否存在 且为目录
-e file 检查file是否存在
-f file 检查file是否存在 且为文件
-r file 检查file是否存在 且可读
-s file 检查file是否存在 且非空
-w file 检查file是否存在 且可写
-x file 检查file是否存在 且可执行
-O file 检查file是否存在 且属当前用户所有
-G file 检查file是否存在 且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧

if 控制语句
if [条件1]; then
执行第一段程序
elif [条件2];then
执行第二段程序
else
执行第三段程序
fi

#!/bin/bash
function wirte_text(){
        echo "$1 即将写入内容"
       cat>"$1"<< EOF
		$2
EOF
        echo "$1 内容写入成功"
}

read -p "请输入文件夹名称" dir_name
#获取当前路径
path=$(pwd)
if test -e $dir_name; then
	echo "$dir_name 文件夹存在 即将进入该文件夹"
	cd $dir_name 
	read -p "请输入文件名称" file_name
	if test -e $file_name; then 
          echo "$file_name文件存在,即将读取文件内容"
          echo $(cat $file_name)
	else
		echo "$file_name文件不存在 即将创建文件"
		touch $file_name
		echo "$file_name文件创建成功"
		echo "$(ls)"
		text='
			你好
			好久不见
		'
		wirte_text $file_name "$text"
	fi
else
	echo "$dir_name 文件夹不存在 即将创建"
	mkdir $dir_name
	echo "$dir_name 文件创建成功"
	echo $(ls $path)
	read -p "请输入文件名称" file_name
	touch "$path/$dir_name/$file_name"
	cd $path/$dir_name
	echo $path/$dir_name
	echo $(ls "$path/$dir_name")
	text="你好
		hi
		"
	echo "$text"
       wirte_text $file_name "$text"
	
fi


在这里插入图片描述

注意 wirte_text $file_name "$text" 需要用""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/686042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无线麦克风什么牌子的音质效果好?一文揭秘领夹麦克风哪个品牌好

​近年来&#xff0c;无线领夹麦克风在各个领域都大放异彩&#xff0c;无论是直播、采访还是上课&#xff0c;都能看到它的身影。这款小小的无线麦克风&#xff0c;蕴含着巨大的能量&#xff0c;为媒体人的创作提供了强大的支持。对于想要更新设备的媒体人来说&#xff0c;现在…

打造国产软硬件一体化解决方案 YashanDB与宏杉科技完成多项兼容互认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与宏杉科技系列存储、系列服务器与数据库一体机等多款产品顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;共同提供高效、稳定、安全的国产软硬件一体化解决方案&…

tmux工具使用鼠标滚动窗口及分屏命令

tmux工具使用鼠标滚动窗口及分屏命令 1. tmux source配置文件 长期生效2. 临时生效3. 实现分屏 1. tmux source配置文件 长期生效 vim ~/.tmux.conf echo "set -g mouse on" > ~/.tmux.conf tmux source-file ~/.tmux.conf2. 临时生效 1. 进入到tmux命令窗口 2.…

流水线建构apk、abb实战(一)

在构建机上需要下载的工具 流水线中的构建机无法使用Android Studio中自带的sdk工具下载&#xff0c;所以得下载commandlinetools命令行工具&#xff0c;下载后使用随附的 sdkmanager 下载其他 SDK 软件&#xff0c;解压后按照/cmdline-tools/latest/bin/sdkmanager目录结构整…

【Java毕业设计】基于Java的教师考勤管理系统的设计与实现

文章目录 摘 要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 vue技术1.4.2 B/S结构1.4.3 Spring Boot框架1.4.4 MySQL数据库1.4.5 MVC模式 2 系统需求分析2.1 可行性分析2.2 功能需求分析 3 系统设计3.1 功能结构设计3.2 系统…

红酒保存中的软木塞与瓶身保护

云仓酒庄雷盛红酒&#xff0c;以其卓着的品质和精美的包装赢得了众多消费者的喜爱。在红酒的保存过程中&#xff0c;软木塞与瓶身保护是至关重要的环节。本文将深入探讨这两方面的问题&#xff0c;以帮助消费者更好地理解和欣赏云仓酒庄雷盛红酒。 首先&#xff0c;我们来谈谈软…

神经网络 torch.nn---损失函数与反向传播

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation Loss Function的作用 每次训练神经网络的时候都会有一个目标&#xff0c;也会有一个输出。目标和输出之间的误差&#xff0c;就是用Loss Function来衡量的。所以&#xff0c;…

美国签证办理需要带哪些材料?

在申请美国签证时&#xff0c;准备充分的材料至关重要。以下知识人网整理的关于您可能需要携带的一些常见材料&#xff1a; 1.护照&#xff1a;您的护照必须是有效的&#xff0c;并且在签证申请过程中至少有六个月的有效期。 2.签证申请表&#xff1a;您需要填写并提交签证申请…

29 - 买下所有产品的客户(高频 SQL 50 题基础版)

29 - 买下所有产品的客户 selectc.customer_id fromCustomer c group byc.customer_id havingcount(c.product_key)(select count(distinct product_key) from Product);

Windows下安装和配置Redis

目录 1、下载redis压缩包 2、解压redis文件 3、启动redis临时服务 4、打开Redis客户端进行连接 5、使用一些基础操作来测试 5.1、输入ping命令来检测redis服务器与redis客户端的连通性 5.2、使用set和get命令测试redis数据库进行数据存储和获取 5.3、在命令中通过shut…

Easy 同学:AI 时代将加速计算机专业和程序员职业的分化

一、原贴 2024 年 6 月 5 日 拥有 60多万粉丝的方糖气球&#xff08;ftqq.com&#xff09;博主 、独立开发者&#xff1a;Easy 发表了一篇 AI 对计算机专业和程序员行业影响的新浪博客&#xff0c;看后很有启发&#xff0c;故而将原文摘录于此&#xff1a; 单独开个贴说一下吧…

项目实战系列——WebSocket——websock简介

最近项目中需要用到mes和本地客户端进行实时通讯&#xff0c;本来想用webapi进行交互的&#xff0c;但是考虑到高效和实时性&#xff0c;就采用这一项技术。 以往采用的方式——长轮询 客户端主动向服务器发送一个请求&#xff0c;如果服务器没有更新的数据&#xff0c;客户端…

我的python管理

目前环境 Anaconda&#xff1a;python3.9 python2.7 IDA&#xff1a;python3.8 pycharm&#xff1a;&#xff1f;&#xff1f; 以后应该会补吧… 因为某些文件似乎用的python2决定整个python2 安装python2.7 打开anaconda命令行输入 conda create --name python27 python2…

六、Docker Swarm、Docker Stack和Portainer的使用

六、Docker swarm和Docker stack的使用 系列文章目录1.Docker swarm1.简介2.docker swarm常用命令3.docker node常用命令4.docker service常用命令5.实战案例6.参考文章 2.Docker stack1.简介3.Docker stack常用命令4.实战案例5.常见问题及调错方式1.查看报错信息并尝试解决&am…

【简报】VITA 74 (VNX)总结

参考源 VITA 74 &#xff08;VNX&#xff09;A VITA 74 &#xff08;VNX&#xff09;B VITA 74 &#xff08;VNX&#xff09;C VITA 74 &#xff08;VNX&#xff09;D VNX&#xff0c;也称为 VITA 74&#xff0c;在 VITA 标准组织管理的规范中定义。VNX目前已进入“试用”状…

1104 天长地久(测试点1,2,3)

solution 测试点3超时&#xff1a;直接暴力搜超时。m和m1的最大公约数一定是1&#xff0c;则A的个位一定是9才有可能gcd(m, m1)大于1&#xff0c;步长变为10。测试点1&#xff0c;3&#xff1a;m和n的最大公约数是大于2的素数测试点2&#xff1a;按照n从小到大排序&#xff0c…

生死战的主场,国足与泰国队1比1战平,遗憾失去了出线主动权

6月6日晚&#xff0c;于中国足球曾经的福地沈阳&#xff0c;中国男子国家足球队迎来了一场至关重要的对决&#xff0c;与泰国队展开了一场生死较量。在此前&#xff0c;中国队只需取胜即可提前一轮晋级&#xff0c;然而遗憾的是&#xff0c;国足未能把握住机会&#xff0c;再次…

Android Studio安装详细教程

&#x1f4d6;Android Studio安装教程 ✅1. 下载✅2. 安装✅3. 第一次启动导向 ✅1. 下载 官方地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 下载最新稳定版即可 ✅2. 安装 1.点击运行android-studio-2023.3.1.18-windows.exe安装包&#xff0c;直…

四川汇聚荣聚荣科技有限公司综合实力如何?

在探讨一个公司的综合实力时&#xff0c;我们不仅关注其经济表现&#xff0c;还应深入分析其技术实力、市场地位、创新能力、团队素质以及社会责任感等多个维度。四川汇聚荣聚荣科技有限公司作为一家立足于科技领域的企业&#xff0c;其实力究竟如何呢?接下来的内容将围绕这一…

神了,Suno创作的《不期待》三个版本,你最喜欢哪一个?

Suno AI 最近尝试了下 Suno AI 的v3.5模型&#xff0c;有点惊艳 做了三首版本的AI歌曲&#xff0c;词是我写的&#xff0c;其他全都交给Suno了&#xff0c;欢迎大家来听听 B站链接 Youtube链接