linux - (Bash) 如何将许多文件替换到脚本中?

标签 linux bash file substitution

我的脚本接受一个参数($1)。所以我这样运行它:bash script.sh file1.txt。但是当我想替换更多文件(bash script.sh *)时,他只从所有文件中取出一个文件。我怎样才能让它发挥作用?是否应该有另一个脚本将文件夹中的所有文件替换为 $1 到 script.sh 或者是否有更简单的方法?

#!/bin/bash
sed -i '/^$/d' $@
declare -a command
while read -r line
do
  [[ "$line" =~ ^secretcommand$ ]] || continue
  read -r cmd || break
  eval "$cmd"
  break
done<"$@"

它不适用于“$@”。

你能帮帮我吗?

最佳答案

代码中的循环旨在遍历给定文件的所有行。您需要添加一个外部循环来遍历每个文件。

#!/bin/bash
sed -i '/^$/d' "$@"
for file in "$@"
  while read -r line
  do
    [[ "$line" =~ ^secretcommand$ ]] || continue
    read -r cmd || break
    eval "$cmd"
    break
  done<"$file"
done

请注意,只要您想将“$@”用作命令的参数列表(例如上面的 sed 命令),就需要引用它。

关于linux - (Bash) 如何将许多文件替换到脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907791/

相关文章:

linux - 基于唯一 ID 转置数据 - awk

c - 如何在程序执行时创建控制终端?

bash:flock 可以阻止脚本一起运行吗?

java - 文件传输后Java Socket自动关闭

javascript - 输入类型 ="file"样式帮助

c++ - 我是否正确使用了 usleep 还是这是一个错误?

linux - 无法使用 suid 二进制文件删除特权?

bash - 如何使用 bash 更改字符串中的扩展名?

linux - linux文件上的退格问题

c - 用 C 语言解析具有多个相似 block 的文件