我只想将某个目录中的所有文件放入一个 bash 数组中(假设所有文件的名称中都没有换行符):
所以:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
Run Code Online (Sandbox Code Playgroud)
结果为空!
如果我使用临时文件或其他文件的迂回方式:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
Run Code Online (Sandbox Code Playgroud)
结果!
但是为什么不能mapfile
从管道中正确读取?
我有一个AVM的Fritz!Box 7490住宅 DSL/调制解调器/路由器。
可以将路由器的当前配置转储为文件(在“系统 > 备份 > 保存选项卡”下)。结果是一个简单的结构化文本文件,不是 JSON,但几乎如此(出色的设计决策,AVM!)
我想非常规地修改它并再次上传它以更改路由器的配置。
我想修改什么?首先,清空现在非常大的 DHCP 缓存 - 通过界面执行此操作需要很长时间(点击数小时)。其次,修改传递给 LAN 上 DHCP 客户端的 DNS 服务器、选项 servercfg.user_dns1_for_ipv4
和servercfg.user_dns2_for_ipv4
,它们无法通过 7490 接口访问。
然而,路由器的配置上传工具(“系统 > 备份 > 恢复选项卡”)会验证文件的完整性。显然,它根据内容计算校验和,并根据要上传的文件中嵌入的校验和验证这些校验和。这是最后一行:
**** END OF EXPORT 0428BE3C ****
Run Code Online (Sandbox Code Playgroud)
如果不匹配,上传将被拒绝,并显示“指定的文件不是有效的导入文件”。(如果匹配,则无需多说即可应用上传并重新启动路由器。哎哟!)
在型号 7390 中,可以通过在最顶部NoChecks=yes
的介绍字符串之前添加来禁用完整性检查**** CFGFILE:ar7.cfg
(参见例如更改 Fritzbox 上的 DNS)这显然不再适用于 7490(太多人破坏他们的设备?)
是否有另一种解决方法可以使这个现代版本的POKE工作?