(Bash)如何将许多文件替换成脚本?

时间:2017-01-28 08:29:52

标签: 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<"$@"

它没有使用&#34; $ @&#34;。

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

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

#!/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命令),就需要引用“$ @”。