bash笔记

Bash脚本基础语法
本文介绍了Bash脚本的基础语法,包括IO重定向、注释、变量、判断及管道等核心概念。通过实例帮助读者理解如何使用这些语法来编写有效的Bash脚本。

前言

有时候阅读一些脚本语言的时候总是遇到很多问题,并且学了几次,也没学出太好的效果,这次基本强调语法。主要为了可以阅读懂大部分bash脚本为目的的思路,整理出自己的思路,好好总结一下bash的主要奇怪的语法,希望以后可以不用在这里纠结。

正文

这里主要顺序还是按照知识要点来记录,主要是用法,和一些例子,不会存在特别多的理论讲解,

1. io重定向—— >

这里指的是类似java中的io流的概念,可以让固定的指令产生的内容作为输入,比如

ls > test.txt;
ls >> test1.txt;

这是将当前目录内容直接生成一个test.tex文件,如果是`>>,这个是将值连接到文件的末尾。
当我们重定向一个特殊变量时候,比如:

cat /dev/null > test.txt
: > test.txt    #:这个代表啥也不做指令,所以为空,效果同上。

这里将空内容导入test.txt重新写入文件,当然清楚了文件内容,

scriptname >filename 重定向脚本的输出到文件中.覆盖文件原有内容.
command &>filename 重定向stdout 和stderr 到文件中
command >&2 重定向command 的stdout 到stderr
scriptname >>filename 重定向脚本的输出到文件中.添加到文件尾端,如果没有文件,则创建这个文件.

<< 重定向,用在”here document”
<<< 重定向,用在”here string”

2. 注释

#开头的内容,指导行结束。
例如:

echo "hello world"  #这是一行注释;

#功能很强大,我这里暂时举几个例子,

echo ${PATH#*:} # 参数替换,不是一个注释
echo $(( 2#101011 )) # 数制转换,不是一个注释
echo "$#" #输出所有参数,

3. 变量

这个脚本语言当然不含数据类型了,直接声明,例如:

dir=/home/myuser/project
cd $dir

这里是其他关于let的用法暂时省略,

4. 判断

? 这个可以用来判断,(())这个可以用作c语言风格的切换,当?放在里面,可以用作三元操作,
[] 这个也是测试,
[[]] 也是
这个是相当复杂,可是这里主要记住一些test的参数,这里比较复杂,就不详细介绍,主要和if连用。

5. {}

这个可以扩展,比如:

cat {file1,file2,file3} > combined_file
# 把file1,file2,file3 连接在一起,并且重定向到combined_file 中.
cp file22.{txt,backup}
# 拷贝"file22.txt""file22.backup"中

echo {file1,file2}\ :{\ A," B",' C'}
file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

可以和io重定向连接使用

File = ~/test.txt
{
read line1
read line2
} < $File

管道 |

| 管道.分析前边命令的输出,并将输出作为后边命令的输入.这是一种产生命令链的好方法.

echo ls -l | sh
cat *.lst | sort | uniq
# 合并和排序所有的".lst"文件,然后删除所有重复的行.

后台控制

& 例如

for i in 1 2 3 4 5 6 7 8 9 10 #第一个循环
do
echo -n "$i"
done&

连续操作

(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)

# 更优雅的写法应该是
# cd source/directory
# tar cf - . | (cd ../dest/directory; tar xpvf -)
#
# 当然也可以这么写:
# cp -a /source/directory/* /dest/directory
# 或者:
# cp -a /source/directory/* /source/directory/.[^.]*/dest/directory
# 如果在/source/directory 中有隐藏文件的话.

这里用的是与。先执行前版部分,后开始执行

后记

这里基本我可以阅读一部分代码了,感觉流程不是太大问题,另外函数这里暂时省略,以后补充,这里有挺多的内容,以后完善。

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值