首页 > 系统相关 >【Linux】shell 脚本 (.sh) 编写及执行

【Linux】shell 脚本 (.sh) 编写及执行

时间:2024-10-22 11:59:55浏览次数:1  
标签:文件 shell name echo var sh Linux test

shell脚本

  shell脚本就是一些命令的集合

#!/bin/bash 
echo "文件开头代表:该文件使用的是bash语法"

 

一、运行.sh文件

方法一:当前文件执行.sh 文件

# 文件必须含有x执行权限 [文件赋x权限:chmod u+x hello.sh]
./test.sh

# 文件可以没有x权限
sh test.sh

 

方法二:绝对路径执行.sh 文件

/home/test/test.sh

./home/test/test.sh

sh /home/test.test.sh 

 

查看运行过程

sh -x test.sh

 

  运行预览

  

 

二、脚本编写

 

实例1:输出内容到控制台

# test.sh内容

echo "test shtest"

  运行结果

  

 

实例2:变量格式: “变量名=变量的值”。当在脚本中引用变量时需要加上’$’符号或者“${变量}”

# 变量 var_name ;引用变量 $var_name
var_name="test.sh"

echo "test $var_name"

  执行结果  

  

 

实例3: 复制文件

# 变量 `date……` [`非单引号,而是反单引号]
var_name="test.sh"

echo "test $var_name"

cp /home/appuser/ntest/$var_name /home/appuser/cptest/`date "+%Y-%m-%d-%H:%M:%S"`--$var_name

  执行结果 

  

 

实例4:将执行命令的结果用作变量输出

# 变量
var_name="test.sh"
var_para=$(ls)

echo "test输出变量: $var_name"
echo "test输出执行命令的结果变量:${var_para}" 

   执行结果

   

 

实例5: 用户输入 表示in_name变量的值需要用户通过键盘输入得到

# 写法一:read -p 选项类似echo的作用
read -p "请输入您的名字:" in_name
echo "您输入的名称为:$in_name"

# 写法二:会存在换行输入
echo "请输入你的年龄:"
read in_age
echo "您输入的年龄是:$in_age"

 

  运行结果

  

 

 实例6: 当前时间为变量,创建文件

now_date=$(date "+%Y-%m-%d_%H:%M:%S")

echo "当前时间:$now_date"

# 批量创建文件
touch file{01..03}_$now_date.log
#touch ${now_date}_file{04..07}.log
touchfile.sh

  运行结果

  

以时间命名每隔2s创建1个文件

  运行结果

  

 

  

 实例7: 计算 数学计算要用’[ ]’括起来并且外头要带一个’$’

# 暂停2s
sleep 2
# 变量
a=1
b=3
# 计算a、b之和
sum=$[$a+$b]
echo "sum is $sum"

   运行结果

  

 

 实例8: 预设变量

# $1的值就是在执行的时候输入的1,而$2的值就是执行的时候输入的$2 $0代表文件名
echo "$0 $1 $2"

sum=$[$1+$2]
echo $sum

  运行结果

  

 

 实例9: 逻辑判断 if

语法格式
# 不带else  ((nums<20))是因为.sh中,用一个小括号或者不用都会报错
read -p "请输入数字:" nums

if ((nums<20));then
        echo "输入不能小于20"
fi

# 带else
read -p "请输入数字:" nums

if ((nums<20));then
        echo "输入不能小于20"
else
        echo "恭喜"
fi
elif (()) if else elif []

  运行结果

  

注释: -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)

 

 实例10:判断文档属性

# 格式为: if [ -e filename ] ; then
# -e :判断文件或目录是否存在
if [ -e touchfile.sh ];then
    echo "touchfile.sh 文件存在"
fi

#-d :判断是不是目录,并是否存在
if [ -d touchfile.sh ];then
    echo "是目录"
else
    echo "touchfile.sh 不是目录"
fi

#-f :判断是否是普通文件,并存在
if [ -f touchfile.sh ];then
    echo "touchfile.sh 是普通文件"
fi

#-r :判断文档是否有读权限
if [ -r touchfile.sh ];then
    echo "touchfile.sh 有读权限"
fi

#-w :判断是否有写权限
if [ -w touchfile.sh ];then
    echo "touchfile.sh 有写权限"
fi

#-x :判断是否可执行
if [ -x touchfile.sh ];then
    echo "touchfile.sh 是可执行文件"
fi

   运行结果

  

 

实例11: 逻辑判断 case; 不限制value的个数(用于编写系统服务的启动脚本)

语法格式
read -p "奇偶判断,请输入一个数值:" nums

r=$[$nums%2]

case $r in
1)
    echo "奇数"
    ;;
0)
    echo "偶数"
    ;;
esac

  运行结果

  

 

实例12: for 循环

语法格式
# 脚本中的seq 1 5 表示从1到5的一个序列
for i in `seq 1 5`;do
    echo $i
done

  运行结果

  

  

for i in `ls`; do echo $i; done 

#for i in `cat test.txt`; do echo $i; done

  运行结果

  

 

 

实例13: while 循环

语法格式 监控脚本
a=7
while [ $a -ge 1];do
    echo "$a"
    a=$[$a-2]
done

   运行结果

  

 

 

 实例14: 函数

函数格式
function sun(){
        sum=$[$1 + $2]
        echo $sum
}

sun $1 $2

  运行结果

  

 

 

 

 

 

 

 


 

拓展

问题1:变量未找到:test.sh: line 2: var_name: command not found

问题原因:等号两遍的变量名和值 之间不能存在空格

 

 

 

 


 

知识点:

 

 

# 查看日历

cal    # 查看当月日历

cal 2022 # 查看年份日历

 

  运行结果

  

   

 

 

# :输出重定向,以覆盖的形式一个文件的内容写入到另一个文件 >>:追加:将文件的内容追加到另一个文件的末尾 语法: ls -l >文件 将列表的内容写入到文件(覆盖原有内容) ls -al >>文件 将列表的内容追加到文件的末尾 cat 文件1 > 文件2 将文件1的内容写入到文件2中(覆盖后者文件的内容) echo "内容" >> 文件 将内容追加到文件中

标签:文件,shell,name,echo,var,sh,Linux,test
From: https://www.cnblogs.com/lcword/p/18492283

相关文章

  • 那些被shell编程折磨的日子
    前言:我们为什么要学shell编程,因为shell编程占据了Linux的半壁江山,是运维人员必会的技能之一。Shell编程语言必知必会Shell命令解释器:bash目前应用最广泛一款命令解释器,红帽系列(默认),Debian,Ubuntu编程环境准备修改vimrc文件,达到控制vim创建,编辑文件的动作,当前用户......
  • 【SHELL】awk 命令用法
    linux命令行查询awk用法信息awk--helpUsage:awk[POSIXorGNUstyleoptions]-fprogfile[--]file...Usage:awk[POSIXorGNUstyleoptions][--]'program'file...POSIXoptions:GNUlongoptions:(standard)-fprogfile......
  • Linux环境下Tomcat的安装与配置详细指南
    ApacheTomcat是一个广泛使用的开源JavaServlet容器和Web服务器,适用于运行JavaWeb应用程序。本指南将详细介绍如何在Linux环境中安装和配置Tomcat,包括必要的前提条件、下载安装、配置环境变量、设置为系统服务以及基本的安全配置。目录前提条件安装Java环境创建Tomcat用户......
  • HyperMesh打开保存文件与面板功能使用
    打开和保存文件在HyperMesh中,打开和保存文件是最常用的命令。本节介绍HyperMesh打开和保存文件的多种方式。后续的练习中假定用户已经熟练使用HyperMesh进行文件打开和保存操作。本节将学习:  -打开HyperMesh文件。-在当前HyperMesh窗口中导入文件。-保存Hyper......
  • shell实例手册-文件操作
    一、文件常用操作   touchfile             #创建空白文件   rm-rf目录名          #不提示删除非空目录(-r:递归删除-f强制)   dos2unix               #windows文本转linux文本    unix2dos    ......
  • 前端发布shell脚本
    将“切换目录、npm构建、tar打包、scp传输到服务器、服务器端解压、服务器端文件解压替换、服务器端服务重启”流程,整合成一个shell脚本#!/bin/bash####@Description:前端自动发布脚本#@FilePath:publish.sh####获取脚本所在目录SCRIPT_DIR="$(cd"......
  • 二、Linux 包管理器与软件安装
    前言在上一章我们简单了解了Linux的基本概念,基本思想,以及一些简单的文件操作,相信你现在已经可以打开linux并进行一些基本操作。当然,这些操作对于我们操作一个电脑来说过于简陋了,这和在windows下拿鼠标到处点点点一样,什么都干不了。本章来继续扩展linux的相关操作,本章我们从软......
  • Linux常用命令
    1.ls:列出当前目录中的文件和子目录ls2.pwd:显示当前工作目录的路径pwd3.cd:切换工作目录cd/path/to/directory4.mkdir:创建新目录mkdirdirectory_name5.rmdir:删除空目录rmdirdirectory_name6.rm:删除文件或目录rmfile_namerm-rdirectory_name#递归删除目录及......
  • 【SHELL】sed 命令用法
    linux命令行查询grep用法信息sed--helpUsage:sed[OPTION]...{script-only-if-no-other-script}[input-file]...-n,--quiet,--silentsuppressautomaticprintingofpatternspace--debugannotateprogramexecution......
  • PowerShell的Runspace是一个用于执行PowerShell代码的环境。它提供了一个独立的上下文
    PowerShell的Runspace是一个用于执行PowerShell代码的环境。它提供了一个独立的上下文,允许你在其中运行命令、脚本和表达式。Runspace可以被认为是PowerShell会话的一个实例,可以在多线程环境中使用,允许你并发执行多个PowerShell任务。以下是关于PowerShellRunspace的一些关键点和......