首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个shell诡异问题解决

前两天上线,同事碰见个shell脚本问题,当时场景,异常诡异。...这个时候,sh命令-x这个参数,就开始起作用了,他意思是显示shell执行过程命令,通过执行,我们看到了区别,变量a值,不是期待AA,而是"AA\r", + a='AA\r' 不要小瞧\r,...\n是LF或ASCII0x0A(10),\r是CR或ASCII0x0D(13)。 问题来了,LF和CR是什么?...要是在这0.2秒里面,又有新字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束字符。...既然明确了问题解决就很清晰了,可以在curl加个tr -d,就达到了删除\r,保证对换行, a=`curl ... | tr -d '\r'` 在科学技术上,任何你看到现象都会有他原因,所谓存在即合理

1.4K20

更新博客生成发布及同步GitHubShell脚本:解决文件名空格问题

前面一篇文章通过Linux Shell脚本方式,实现博客生成发布及同步GitHub功能:先同步GitHub个人仓库Markdown文章到本地,然后通过Pelican编译生成静态HTML文件,最后发布到...由于没仔细考虑到Markdown文件名可能包含空格问题,所以在Shell脚本文件名遍历时(代码第108行)出现了BUG:Linux Shell默认把空格空格做为值与值之间分隔符,所以原本一个带空格文件名就被拆分成了几个文件名...1 解决方法 网上查找相关资料后,有两种主要实现方法:Method 1是通过修改IFS(Internal Field Seperator: Linuxshell预设分隔符,用来把command line...Method 2是直接在使用find命令遍历文件时,把结果作为while read输入,这样就可以避免空格作为文件名分隔符了。...2 完整代码 根据这两种方法,修改后代码如下,同时也已经更新到了当前脚本所在GitHub工程:https://github.com/vfhky/shell-tools。

9310
您找到你想要的搜索结果了吗?
是的
没有找到

SHELL技巧:处理文件名那些空格

但是这种命名方式给Linux命令行工具和Shell带来了困扰,因为大多数命令,都是默认以空格做为值与值之间分隔符,而不是做为文件名一部分。 看下面的脚本,我们可以了解更清楚: ?...执行结果如下: ? 实际上,当前目录文件只有两个: ? 对于简单文件名,如上例,我们也可以通过 for i in *doc 这样简单方法来获得文件列表。...但是对于复杂环境,如下图,我们如何获得这些列表呢? ?...通过 "*\ *" 这样技巧可以避免上面所说问题,但是在应用mv或其他操作时,还是会出现问题。 ? 上面的问题,可以通过将变量放入引号("$i")解决,通常情况下,引号空格可以被正确处理。...但这并不是一个恒久解决办法,因为我们无法处理管道、子Shell等复杂情况。

1.7K10

Linux shell利用sed如何批量更改文件名详解

前言 本文主要给大家介绍了关于Linux shell用sed批量更改文件名相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍吧。...文件名包含空格解决方法 我们可以直接将文件列表写到 for 循环中,而不是通过命令来得到,例如: for file in "file1 file2 file3" do ... done 可以看到 for...循环是通过空格来分割字符串,因此如果待更改文件名包含空格的话,就会被拆分成多个文件名,从而出错。...要解决这个问题,我们可以将 IFS(内部字段分隔符)设置为换行符 \n,这样一来,for 循环就会按行来获取变量值,确保每次获取的确实是一个完整文件名。...: ls | grep "*.txt" | while read file do ... done 使用 find 获取文件列表 之前示例,我们是通过 ls 命令来获取文件列表。

4K20

Centos如何解决apache目录浏览文件名乱码? 转

为什么80%码农都做不了架构师?>>> ?...在Centosapache服务器目录浏览功能非常有用,特别是在共享文件时候,如果不希望使用FTP,而直接使用目录浏览功能会非常方便,但是如果是中文目录或者文件则很容易乱码,遇到朋友可以参考如下解决方法...工具/原料 Centos7 apache2.4 方法/步骤 目录浏览功能即直接访问网站目录,乱码问题如下图所示。 ?...按G键(大写),切到vi最后一行,添加如下代码:IndexOptions Charset=UTF-8添加完成后输入:wq!,保存并退出vi。 ?...也可以将4代码写入.htaccess,写入后同样重启apache服务 。 ? 重启后再看一下效果,乱码问题解决。 ?

1.7K20

shell帮助解决ORA问题

今天碰到一个设计严重问题,由于使用了外部文件来和sqlplus交互 sql大体结构如下 select xxxxx from xxxxx where table_name in ( "解析外部文件“)...在测试环境没有什么问题,当某个用户表比较多时候,就开始报如下错误 * ERROR at line 1003: ORA-01795: maximum number of expressions in...******************************************************************* 因为需要,一定要解析这个外部文件,所以只能从别的方面进行考虑进行解决...我加了了分页改进,没500条记录分为一页,这样循环调用就可以生成最终文件了。.../ 500"|bc` pages_num=`echo '' | awk -v a=$pages_float '{print int(a+0.999)}'` --上面的这一段基本就是要实现oracleceil

61750

如何解决代码if…else 过多问题

今天我们就来看看如何“干掉”代码 if...else,还代码以清爽。 问题一:if...else 过多 问题表现 if...else 过多代码可以抽象为下面这段代码。...所以,软件系统扩展性是非常重要。而解决 if...else 过多问题最大意义,往往就在于提高代码可扩展性。 如何解决 接下来我们来看如何解决 if...else 过多问题。...还有一些问题,其中条件表达式并不像上例那样简单,但稍加变换,同样可以应用表驱动。...当然,也会有上一节提到两个问题如何解决 上一节介绍方法也可用用来解决本节问题,所以对于上面的方法,此节不做重复介绍。...如何解决 对于 if...else 表达式复杂问题,主要用代码重构抽取方法、移动方法等手段解决。因为这些方法在《代码重构》一书中都有介绍,所以这里不再重复。

2.9K70

如何解决代码 if…else 过多问题

今天我们就来看看如何“干掉”代码 if...else,还代码以清爽。 问题一:if…else 过多 问题表现 if...else 过多代码可以抽象为下面这段代码。...所以,软件系统扩展性是非常重要。而解决 if...else 过多问题最大意义,往往就在于提高代码可扩展性。 如何解决 接下来我们来看如何解决 if...else 过多问题。...还有一些问题,其中条件表达式并不像上例那样简单,但稍加变换,同样可以应用表驱动。...当然,也会有上一节提到两个问题如何解决 上一节介绍方法也可用用来解决本节问题,所以对于上面的方法,此节不做重复介绍。...如何解决 对于 if...else 表达式复杂问题,主要用代码重构抽取方法、移动方法等手段解决。因为这些方法在《代码重构》一书中都有介绍,所以这里不再重复。

2.1K20

如何解决eclipse中文乱码问题

针对不同情况,需要使用不同方案,下面就针对一些案例讲解如何解决乱码问题。...解决乱码问题主要思路是设置正确合适编码,如果不知道目标文件原本编码,可以进行一定尝试,通常尝试下GBK和UTF-8这两个编码即可。...方法 1 设置单个文件字符编码,解决单个文件乱码问题 有时候不小心copy来单个文件编码与你workspace默认编码不一致,就导致了单个乱码。...(需要注意是,如果copy来文件在eclipse显示是正常,但是编码与其他文件不一致,若你想统一编码,就需要在设置编码前,记得先把文件内容copy一下,然后设置好编码,再把copy内容粘贴到编码修改后文件...2 设置第三方jar包字符编码,解决整个jar乱码问题 第三方jar包编码问题可能是最常见问题,其解决方案与单个文件比较类似,在Pakcage Explorer或者Project Explorer

7.6K20

shell脚本while 和shift 配和解决变长参数问题

shell脚本,我们经常需要根据传递参数个数来进行相应处理,那么参数个数不定情况下如何实现优雅处理呢?...鄙人不才,一直先判断参数总个数,然后执行对应循环做处理,这样不是不可以,就是觉得怪怪,作为一个进阶运维人员,总得有更好方法,不是吗?...在查看系统自带脚本时候,发现了如下解决方法(学习系统中原生脚本重要性): [root@localhost ~]# cat test.sh #!...这个是实现关键. done [root@localhost ~]# ./test.sh "P1" "P2" P1 P2 [root@localhost ~]# ....[root@localhost ~]# 从上面的帮助可以看出,如果shift 命令不带参数,那么就是“将位置参数向左移位,最左边参数被丢掉" 用上面的方法处理起来就优雅多了.

1.8K30

解决shell脚本source etcprofile重载配置文件不生效问题

背景 最近在通过shell脚本在Linux系统安装Java或Python过程,遇到了shell脚本“source /etc/profile”无法生效问题,虽然也可以在执行完脚本后再次执行“source...以下为本次解决问题实践记录: 1.示例 如下图所示,在python_install.sh脚本,在安装完Python3、配置完环境变量后,使用source /etc/profile 命令来重新加载配置文件...所以,当脚本执行完成,回到shell命令行,原子shell脚本执行source命令也就不生效。 3.解决办法 方法一: # 也就是上述提到繁琐方法 ....小结 以上就是shell脚本“source /etc/profile”无法生效原因及解决办法,以及shell"."、"source"、"sh"、"..../"区别,只要脚本中使用了“source /etc/profile”,就可以使用:source xxx.sh(脚本文件名称)来执行脚本,从而自动重新加载配置文件。

7.6K31

解决Linux特殊文件名删除难题

解决Linux特殊文件名删除难题 最近在使用rz上传文件时出现中断,导致生成了乱码文件,尝试删除这些文件时遇到各种报错。...在Linux操作系统,当尝试删除以特殊字符(如-)开头文件时,可能会遇到错误信息,提示“invalid option”。这个问题源于Linux命令行工具对选项参数处理方式。...解决这个问题重要性在于,这涉及到文件管理和维护效率。如果不能正确删除这些文件,可能会导致存储空间浪费,或者在需要时无法清理不必要文件。此外,错误删除操作可能会对系统正常运行造成影响。...本文将介绍几种解决这个问题方法,包括使用--选项停止选项处理、使用相对路径或绝对路径、使用find命令以及通过文件inode号删除文件等。这些方法可以帮助您在Linux环境更有效地管理文件。...上述成功操作能删除 inode 为1575370乱码文件,手动删了半天,才让文件夹下恢复干净。 总结 本文介绍了在Linux处理以-开头文件名删除问题多种解决方案。

8910

如何解决联邦学习通信开销问题

同时,还可以有效应用联合体各方用户所掌握标注数据,解决标注数据缺乏问题。在联邦学习架构每一轮学习过程,中央服务器在当前全部客户端中选定一些客户端子集并将全局模型下发给这些客户端子集。...这种简单处理方式会大大影响这些客户端所提供服务,进而影响用户使用体验。 针对通信开销问题最简单直接解决方案是以牺牲模型准确度为代价、在联邦学习整体框架仅训练占用通信空间较小低容量模型。...提出了一种高效通信分布式定点优化方法(Fixed-point optimization)[5],从解决优化问题或寻找凸凹函数鞍点角度出发限制客户端本地计算,从而解决联邦学习通信开销瓶颈问题。...解决通信开销问题研究进展 1.1 通过压缩方法解决通信开销问题 通过压缩处理减少联邦学习框架中上行、下行传递数据量是最直接解决通信开销问题方法。我们首先来看一看这一类方法研究进展情况。...事实上,我们需要解决一个关键问题是找到最优 τ,以使整个过程通信成本最小化。 在联邦学习网络,通常有大量设备(如智能电话)与中央服务器(基站)进行通信。

3K10

前沿 | 如何解决深度学习多体问题

选自Medium 机器之心编译 参与:乾树 多个智能体如何协同工作才能高效完成任务?深度学习领域中多体问题就像物理领域中一样难解。很多研究机构正致力于研发先进技术处理多代理系统问题。...找到两个对抗网络之间平衡状态是一个热门研究课题。在深度学习解决二体问题相当困难。研究发现,使用这种方法可以防止「模式崩溃」不良情况。...本文描述了使用 1800 值函数作为其解决方案一部分,也就是说,每个小球、每个水果和每个怪物都使用了代理。微软研究表明使用数以千计微型代理将问题分解成子问题并实际解决它是有效!...在这个模型,代理之间耦合显然是隐式。 DeepMind 解决了具有共享内存多代理程序问题。...在论文《Distral: Robust Multitask Reinforcement Learning》,研究人员通过「思想融合」灵感代理协调方法来解决一个共同问题

1.2K70
领券