gpt4 book ai didi

linux - 如何使用较少的代码将文件列表传递给 bash 脚本

转载 作者:行者123 更新时间:2023-12-04 16:18:06 25 4
gpt4 key购买 nike

以下代码提供了良好的输出,但它很冗长,并且在有很多不同的“名称”时不能很好地扩展:

#!/bin/bash

name1="jeff"
name2="david"
name3="kenny"
name4="randy"

for i in {1..3}
do
for names in "$name1" "$name2" "$name3" "$name4"
do
awk '{if($1 > 6) print $2}' "$names"_"$i".txt > "$names"_"$i"_above6.txt
done
for names in "$name1" "$name2" "$name3" "$name4"
do
awk '{if($1 < 6) print $2}' "$names"_"$i".txt > "$names"_"$i"_below6.txt
done
done
(所以这段代码处理了 jeff_1.txt、jeff_2.txt、jeff_3.txt、david_1.txt 等等)
有没有办法重新编写代码以压缩“for names in”行?
例如 下面的代码不起作用 ,但旨在提供有关我正在寻找的内容的想法:
#!/bin/bash

name1="jeff"
name2="david"
name3="kenny"
name4="randy"

for i in {1..3}
do
for names in "$name{1..4}"
do
awk '{if($1 > 6) print $2}' "$names"_"$i".txt > "$names"_"$i"_above6.txt
done
for names in "$name{1..4}"
do
awk '{if($1 < 6) print $2}' "$names"_"$i".txt > "$names"_"$i"_below6.txt
done
done

最佳答案

这是使用 的示例数组 :

NAMES=( "jeff" "david" "kenny" "randy" ) 

for NAME in ${NAMES[@]}; do
# Do something with NAME
echo "${NAME}"
done
在这里 https://linuxize.com/post/bash-arrays/#:~:text=Bash%20supports%20one-dimensional%20numerically,1%20references%20the%20last%20element文档。

关于linux - 如何使用较少的代码将文件列表传递给 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67779261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com