TypechoJoeTheme

MetMan's Blog

网站页面
2024-02-16

Shell变量(二)

Shell变量(二)
参数展开参数展开(parameter expansion)是shell提供变量值在脚本程序中使用的过程。缺省情况,未定义的变量会展开成null(空的)字符串。有两种方式引用变量值:$var${var}注:不要和命令替换操作$()搞混。展开运算符分为替换运算符和模式匹配运算符。替换运算符替换运算符用于测试变量是否存在,且在某种情况下允许默认值(缺省值)的替换。比如,当脚本需要根据用户输入位置参数来决定脚本执行行为时,为了防止用户执行时忘了在命令行上输入参数导致脚本运行出错,可以使用替换运算符得到一个缺省值备用。运算符替换用途${varname:-value}如果varname存在且非null,则返回其值;否则,返回value如果变量未定义,返回默认值${varname:=value}如果varname存在且非null,则返回varname的值;否则,设置varname值为value,并返回其值如果变量未定义,则设置变量为默认值${varname:?message}如果varname存在且非null,则返回它的值;否则,显示varname:message,并退出当前的命令或脚本为了捕...
2024年02月16日
328 阅读
0 评论
2024-02-16

Shell变量

Shell变量
Shell简介Shell作为一种“胶水”语言,主要目的是将系统中各种工具粘合在一起,其主要功能是方便的调用各种系统命令。为了这一目的,shell被设计成“面向字符串”的语言,即一切皆字符串。(这有点像Unix设计哲学:一切皆文件)刚接触shell编程时会认为shell脚本只是用来将各种系统命令放在一起组合执行。但shell实际上是一门编程语言,编程语言具有的特点它一般也都有。shell编程学习分为两部分:shell语法变量、逻辑判断与循环流程控制、函数等语法要素齐全。Unix/Linux系统命令系统命令可以看作C语言中的标准库,让用户能够更便捷的完成任务。但需要注意的是,C是编译型语言,而shell是解释型语言。变量Shell主要是字符串处理语言,当然它也提供一些简单的算术预算功能(功能比较弱)。不同于编译型语言(如C、Fortran),shell是脚本型语言,不需要变量类型声明。直接var=value这样变量名赋值,变量类型为字符串。也可以通过一些方法声明为数组。变量声明与引用Shell变量名称的开头是一个字母或下划线符号,后面接任意长度字母、数字或下划线(与C语言定义类似)。...
2024年02月16日
553 阅读
0 评论
2024-02-16

打造个人知识库误区

打造个人知识库误区
今天分享一个油管视频小心效率陷阱:为什么你不需要"第二大脑"或者"个人知识库",对我的启发很大。视频作者分享了很多人对”打造第二大脑“概念即个人的数字笔记系统(个人知识库)的误解及自己的见解。不知道大家是否像我一样,不停的收藏保存资料到自己的笔记软件中,听完课程/报告后,要来PPT保存到硬盘,后面却再也不看一眼,但我们享受着这个过程,看着笔记软件中越来越多的内容,有一种知识获取的满足感,认为这些信息、知识已经掌握了。这就是“输入决定输出”的理念,笔记软件充当着“现在存储,未来使用”的作用。但信息没有经过整理、吸收,成为自己知识体系的一部分,很难在未来得到有效的应用。作者建议打造个人知识库的理念应该改为“输出决定输入”,强调输出的重要性和导向性,并以“Project”(项目)驱动信息的输入和知识的产出。视频作者将项目分为两种:Sprint(冲刺项目)Slow-burn(长期休眠孕育项目)。冲刺项目一般有deadline限制,强调短时间内要有产出。而长期项目则需要带着问题(输出目的)进行信息的收集整理及思考。PCOO法则在作者的PCO法则上扩展成PCOO:P: Project 以项目...
2024年02月16日
362 阅读
0 评论
2024-02-02

气象超算跟踪系列(七)JMA's HPC

气象超算跟踪系列(七)JMA's HPC
本文信息来自TOYODA Eizi的报告"Updates of HPC in JMA"。JMA(Japan Meteorological Agency)计划2024年3月升级HPCF(High Performance Computing Facilities),预期实际性能提升4倍。JMA的高性能计算机以NAPS(Numerical Analysis and Prediction System)命名,目前是第10代,即NAPS10。之前的NAPS供应商为日立(Hitachi),而新一代NAPS第一次采购自富士通(Fujitsu)。NAPS10是在2018年6月投入业务使用,是两台Cray XC50集群,每个集群浮点计算峰值性能为9.13Petaflop/s。新一代NAPS11分两个阶段部署:第一阶段是NAPS11s,其处理器是A64fx架构(与富岳Fugaku超算相同架构),该集群专门用于中尺度模式。第二阶段的NAPS11则是x86_64架构,用于其它业务模式。集群NAPS11sNAPS 11业务使用时间2023.32024.3处理器架构A64fxx86_64内存HBM2HBM2...
2024年02月02日
264 阅读
0 评论
2024-02-02

20届ECMWF高性能计算研讨会介绍

20届ECMWF高性能计算研讨会介绍
第20届ECMWF气象高性能计算研讨会于2023年10月9号到13号在意大利博洛尼亚举行。该研讨会每两年举办一次,是气象领域专注于交流高性能计算技术进展的会议,吸引了众多气象业务部门、研究机构、大学及计算机厂商专家,会议含金量非常高。今年的研讨会主题是“Diversifying HPC",即多样化的高性能计算。该主题反映了高性能计算的发展趋势。一方面,E级计算时代已经到来,异构计算架构逐渐成为主流架构,由此带来模式算法、软件框架、I/O、工作流等适配性问题。另一方面,机器学习和人工智能成为热点,由AI驱动的天气预报大模型(如盘古等)正在改变NWP形态。目前研究热点包括完全数据驱动的AI大模型预报或AI与传统模式“融合”替代部分NWP模式计算过程。尤其是“融合”方式会带来一系列的技术挑战,包括连接AI推理模型和传统NWP模式的软件耦合架构、异构计算资源调度等。研讨会官方网址:https://events.ecmwf.int/event/329/报告PPT及录屏:https://ecmwfevents.com/i/2f557cc3-ae24-42d9-9af2-67578e2e593...
2024年02月02日
193 阅读
0 评论
2024-02-02

Shell退出状态和test命令(二)

Shell退出状态和test命令(二)
test命令可执行的命令执行会有退出状态,如果想对文件属性/字符串比较/数值大小关系比较进行测试操作获得退出状态呢?我们可以通过test命令进行以上测试。test命令执行结果是其参数比较的退出状态。基本语法:test 表达式 [ 表达式 ]test命令的等价用法是[ ],一般我们都喜欢后一种用法。几种常用的测试:文件属性测试表达式测试为真-d filefile是目录-e filefile存在-f filefile为一般文件示例:$ test -d TMP $ echo $? 0 $ [ -f foo ] 1字符串测试表达式测试为真-n stringstring是非null-z stringstring是nulls1 = s2字符串s1与s2相同s1 != s2字符串s1与s2不同示例:$ var=hello $ test -n "$var" #字符串非空 $ echo $? 0 $ test -n "$var1" #空字符串 $ echo $? 1 $ test -z "$var1" $ echo $? 0数字比较测...
2024年02月02日
262 阅读
0 评论
2024-02-02

conda指定虚拟环境目录方法

conda指定虚拟环境目录方法
笔者使用的HPC机器分配的HOME目录空间很小,而conda默认创建的虚拟环境及安装的python包会放置在该目录下,比如~/.conda/envs。Python包安装的多了很快会将HOME目录空间用满,因此需要将Python虚拟环境迁移到大空间的工作分区中。下面记录了设置conda虚拟环境目录方法。方法一(不推荐)使用conda create命令的--prefix选项指定包含路径信息的环境名称。$ conda create --prefix=/path/to/your/envName激活环境命令$ conda activate /path/to/your/envName可以看出,这种方法需要使用全路径的环境名称,使用不方便。方法二(推荐)我们可以在~/.condarc配置文件中指定默认环境和包存放目录。$ vi ~/.condarc envs_dirs: - /path/to/new/envs/dir pkgs_dirs: - /path/to/new/pkgs/cache/dir 设置好配置文件后,可以使用conda info查询环境目录是否改变了。$ conda...
2024年02月02日
1,416 阅读
0 评论
2024-01-11

Shell退出状态和test命令(一)

Shell退出状态和test命令(一)
在介绍Shell的if与case前,应该先了解其Shell退出状态和test命令。因为if/case甚至循环while的条件是否成立是根据执行命令的退出状态来确定的。退出状态就像C语言函数调用必须要有返回值(除了void情况)一样,Shell执行完每一条命令后都会返回一个整数值作为退出状态(exit status)给调用它的程序。这里的Shell命令包括内置Shell命令Shell函数外部命令Shell约定整数值0表示命令执行成功,其它非0表示失败。可以使用内置变量$?查询上一个命令退出状态。$ ls test.F90 test.F90 $ echo $? 0 $ echo foo ls: cannot access 'foo': No such file or directory $ echo $? 2 $ echo $? # 此时查询的是上一个echo命令的退出状态 0 我们可以写一个简单的C程序,main函数返回值10,看程序退出状态是否和函数返回值相同。// shell_exit_status.c #include <stdio.h> int m...
2024年01月11日
274 阅读
0 评论
登录
X
用户名
密码