首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文本后面加上“text”的错误

在文本后面加上“text”的错误
EN

Unix & Linux用户
提问于 2022-12-24 03:14:16
回答 1查看 47关注 0票数 0

我有一个podman-compose文件:

代码语言:javascript
复制
version: "3.8"
services:
  kiwix-serve:
    image: docker.io/kiwix/kiwix-serve:3.3.0-1
    volumes:
      - kiwix_data:/data
      - /home/meijin3/zim/gutenberg_en_all_2022-10.zim:/data/gutenberg_en_all_2022-10.zim
      - /home/meijin3/zim/wikipedia_en_all_mini_2022-09.zim:/data/wikipedia_en_all_mini_2022-09.zim
    ports:
      - 8080:80
    command:
      /data/wikipedia_en_all_mini_2022-09.zim
      /data/gutenberg_en_all_2022-10.zim

我正在尝试创建一个脚本,该脚本将搜索/home/meijin3/zim/中的所有D3文件。它将替换我的撰写文件中包含对.zim文件的引用的任何现有行。

代码语言:javascript
复制
#!/bin/bash

yaml=example.yaml

sed -i '/.zim/d' $yaml

for i in "$(find /home/meijin3/zim/*.zim -printf '%f\n')"; do \
line1='home/emilio/zim/'"$i"':/data/'"$i"
sed -i -e "\,kiwix_data,a "'\ \ \ \ \ \ - '"$line1" "$yaml"; done

batcat $yaml

由于某些原因,我似乎无法理解,我一直收到以下错误:sed: couldn't open file ikipedia_en_all_mini_2022-09.zim:/data/gutenberg_en_all_2022-10.zim: No such file or directory

如果我在/home/meijin3/zim/中只有一个文件,我的脚本运行时没有任何问题(除了还没有将行添加到命令部分这一事实之外)。

我是不是没有对sed命令使用正确的语法?也许问题就在别的地方。如果你能帮忙的话,我们会非常感激的!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-12-24 03:53:55

我通过将find命令的输出分配给数组来解决我的问题,即,

代码语言:javascript
复制
zim_files=($(find /home/meijin3/zim/*.zim  -printf '%f\n'))

我修改了我的for循环以迭代这个数组:

代码语言:javascript
复制
for i in ${zim_files[@]}; do
  sed -i -e '\,kiwix_data,a \ \ \ \ \ \ - /home/meijin3/zim/'"$i"':/data/'"$i" "$yaml"
  sed -i -e "\,command:,a "'\ \ \ \ \ \ /data/'"$i" "$yaml"
done
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/729496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档