(Bash) 如何将多个文件替换到脚本中?
(Bash) How to substitute many files into the script?
我的脚本接受一个参数($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
命令),就需要用引号引起来。
我的脚本接受一个参数($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
命令),就需要用引号引起来。