首页 > 其他分享 >bash基础使用

bash基础使用

时间:2023-12-22 09:34:13浏览次数:26  
标签:10 判断 基础 echo 命令 使用 test bash

小例子

参考

if语句

a=10
b=20
if [ $a == $b ];
then
	echo "a == b "
elif [ $a -lt $b ]
then
	echo "a<b"
else
	echo 'a 可能 > b'
fi

变量声明

使用两种方式来声明变量

# 1
export a=10

# 2
a=10

上面使用 export a=10 的时候,可以将这个变量暴露给其他的应用来使用,如果要是单独的使用a=10那么只能在当前的bash进程中使用这个变量,而在子进程中则无法使用.

a=10;
export b=20;
echo "$b";
echo "$a"

上面的操作都是正确的

流程控制

if 语句

a=10;b=20;

if [ $a == $b ];
then
	echo "$a eq $b"
else
	echo "$a not eq $b"
fi

对于上面执行的重点,首先if语句的判断符号内部,使用[ condition ]来进行判断,这里要注意写中括号的时候要与判断的内容有空格,并且如果报错,那么bash不会停止运行,只会报错对应的行数.
在bash中0为true 1为false 当判断的条件为0的时候会执行then后的内容如果为1那么就会执行else的代码块

elif

a=10;b=20;
if [ $a == $b ];
then 
	echo "$a eq $b"
elif [ $a -gt $b ]
	echo "$a > $b"
fi

if [ $a==$b ] 这里中间没有空格会导致$a==$b可能会导致bash解释器认为$a==$b是一个变量,所以会导致一些问题

条件判断

判断变量和文件夹
[ -v $a ] 判断变量a是否存在
[ -f /aac ] 判断一个文件是否存在
[ -d /aad ] 判断一个文件夹是否存在

判断值
[ $a > $b ] or [ $a -gt $b ] 判断a是否大于b
[ $a < $b ] or [ $a -gl $b ] 判断a是否小于b
[ $a -eq $b ] or [ $a == $b ] 判断a和b的值是否相等

上面并不是bash的专属语法,而是借用自test的命令的用法,这里的[-d /root] 实际上 是 "test -d /root" 也就是使用了test的命令的快捷方式 可以理解为语法糖,下面解释了test的命令的用法

test命令

![[Pasted image 20231108110917.png]]

~ % [ -d /root1 ]|echo $?
0
~ % [ -d /root1 ];echo $?
1

上面的test命令展示了结果,然后使用echo $? 命令来查看最后一次命令执行的结果

所以if进行判断的其实是一条命令输出的结果

循环控制

while 循环

while <判断条件>
do 
	<一些内容>
done
# 下面两个while语句都是死循环判断
while :
do 
	echo "this is test"
done

while true
do
	echo "this is test"
done

for 循环

for循环和其他的编程语言类似,都是基于某个范围的循环

for i in 1 2 3 4 5 6
do echo "this is $i"
done

也可以对其他的命令进行组合

for i in $(ls)
do echo "this is $i"
done

提一下,在bash中命令进行判断有两种方式,一种是通过行数,一种是通过换行的分号;

: 冒号
; 分号

case

语法

echo -n "请输入一个数字(1-3):"
read number

case $number in
    1)
        echo "你输入的数字是 1 "
        ;;
    2)
        echo "你输入的数字是 2 "
        ;;
    3)
        echo "你输入的数字是 3 "
        ;;
    *)
        echo "你输入的不是 1, 2 或 3 "
        ;;
esac

结尾也是像是if语句一样使用case的逆转的字符esac来进行结尾(不太想评价这种东西

使用bash小例子

判断文件或者文件夹是否存在

export condition_dir="/aa"
export condition_file="/aad"

if [ -v $condition_dir ];
then echo "文件存在"
else echo "文件不存在"
fi

标签:10,判断,基础,echo,命令,使用,test,bash
From: https://www.cnblogs.com/index72/p/17920578.html

相关文章

  • 使用js和css实现选项卡切换
    HTML<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><linkrel="stylesheet"hre......
  • DevExpress中使用BandGridView实现复合(多行)表头、设置多行表头背景颜色、表格边框颜色
    一、实现效果二、实现方法2.1、创建复合表头①将创建的GridControl下的GirdView1转化为BandGridView类型;②创建需要展示的列(指定列的名称【Name】、描述【caption】、数据字段名称【FieldName】)③绑定列实现复合表头。注意:如果复合表头有多行,则需要设置新增Band的RowCoun......
  • matlab 全局变量的使用举例
    昨天在写项目时,想要把获取到的临时变量放入一个全局变量,为以后的使用做准备,结果总是出错,今天做了一个小程序,放在这里备用。自定义函数:global_p.mfunctiony=global_p(x)%H1注释行%测试全局变量的用法globalp;%3、声明p是全局变量p=p+1;%4、对全局变量p的操作fprint......
  • Windows环境中使用dotnet-sdk运行打包后的.NET6.0 项目WebApi程序
     去官网下载Windows平台下的SDK并安装,与开发环境对应的版本【我的程序为.NET6.0】:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-6.0.417-windows-x64-installer在开发好的程序中,右键添加Dockerfile支持,添加后修改配置,FROMmcr.microsoft.com/d......
  • 【SpringBootWeb入门-17】Mybatis-基础操作-动态SQL
    1、章节回顾上一篇文章我们讲解完了Mybatis基础操作,本篇继续学习Mybatis中非常重要的功能:动态SQL。什么是动态SQL:随着用户的输入或外部条件的变化而变化的SQL语句,我们称为动态SQL。简单说SQL语句不是固定的,是动态变化的。就拿我们上一篇所提到的根据条件来查询员工的SQL语句来......
  • 第四方支付系统(集成wxpay、alipay)_ LayUI基础
    23以蜡笔小新为开头写一篇藏头诗蜡月寒风正刺骨,笔耕不辍夜已深。小径穿行千百度,新春又至岁华新。暗恋一个人不敢表白怎么办暗恋一个人不敢表白是一个常见的问题,以下是一些建议来帮助你克服这种困境:了解自己:首先,你需要了解自己的情感和动机。思考一下你对这......
  • Python Selenium WebDriver 使用教程
    ​ 1、安装Selenium使用SeleniumWebDriver需要先安装需要安装Selenium库,安装使用的pip在命令如下,pipinstallselenium2、安装浏览器驱动程序SeleniumWebDriver需要特定浏览器的驱动程序,使用的浏览器来下载相应的驱动程序,以便后续在代码中引用。下载地址:ChromeWebDri......
  • Python之PyAutoGUI的使用
    PyAutoGUI是Python的一个库,使用示例如下。一、移动到某个坐标点进行点击importpyautoguiprint(pyautogui.position())pyautogui.moveTo(56,18,duration=1)pyautogui.click()二、依照图片相似度移动到某个图片的位置进行点击importpyautoguipos=pyautogui.locateO......
  • openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命
    openGauss学习笔记-168openGauss数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据168.1操作场景gs_restore是openGauss数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录......
  • Guava自加载缓存LoadingCache使用指南
    第1章:引言大家好,我是小黑,今天我们来聊聊缓存。在Java世界里,高效的缓存机制对于提升应用性能、降低数据库负担至关重要。想象一下,如果每次数据请求都要跑到数据库里取,那服务器岂不是要累趴了?这时候,缓存就显得尤为重要了。那么,怎么实现一个既高效又好用的缓存呢?别急,咱们今天的主......