如何用更少的代码将文件列表传递给bash脚本

如何用更少的代码将文件列表传递给bash脚本,bash,list,variables,Bash,List,Variables,下面的代码提供了良好的输出,但当有许多不同的“名称”时,它很冗长,并且不能很好地扩展: #/bin/bash name1=“杰夫” name2=“大卫” name3=“肯尼” name4=“兰迪” 对于{1..3}中的i 做 对于“$name1”$name2“$name3”$name4”中的名称 做 awk“{if($1>6)print$2}'”$names““$i”.txt>“$names”“$i”6.txt 完成 对于“$name1”$name2“$name3”$name4”中的名称 做 a

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

#/bin/bash
name1=“杰夫”
name2=“大卫”
name3=“肯尼”
name4=“兰迪”
对于{1..3}中的i
做
对于“$name1”$name2“$name3”$name4”中的名称
做
awk“{if($1>6)print$2}'”$names““$i”.txt>“$names”“$i”6.txt
完成
对于“$name1”$name2“$name3”$name4”中的名称
做
awk“{if($1<6)print$2}'”$names““$i.txt>”$names““$i”\u在6.txt下面
完成
完成
(这段代码处理jeff_1.txt、jeff_2.txt、jeff_3.txt、david_1.txt等等)

有没有办法重新编写代码来压缩“for names in”行

e、 g.下面的代码不起作用,但旨在说明我在寻找什么:

#!/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
#/bin/bash
name1=“杰夫”
name2=“大卫”
name3=“肯尼”
name4=“兰迪”
对于{1..3}中的i
做
对于“$name{1..4}”中的名称
做
awk“{if($1>6)print$2}'”$names““$i”.txt>“$names”“$i”6.txt
完成
对于“$name{1..4}”中的名称
做
awk“{if($1<6)print$2}'”$names““$i.txt>”$names““$i”\u在6.txt下面
完成
完成

以下是使用数组的示例:

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

for NAME in ${NAMES[@]}; do
    # Do something with NAME
    echo "${NAME}"
done

这里是文档。

这里是一个使用数组的示例:

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

for NAME in ${NAMES[@]}; do
    # Do something with NAME
    echo "${NAME}"
done

这里是文档。

然后使用数组。不确定你在问什么。第二个例子可以使用间接引用:
在{1..4}do name=“name${d}”echo“${!name}{u$i”。txt done
使用数组。不确定你在问什么。第二个例子可以使用间接引用:
在{1..4}do name=“name${d}”echo“${!name}{u$i”。txt done
显然是数组中的新手。如果每个名称都有多个文件要处理(例如jeff_1.txt、jeff_2.txt、jeff_3.txt),那么这些文件是否需要分别添加到名称数组中,或者是否有方法在以后调用不同版本的“jeff”文件?使用您的示例,我将如何更改echo“${NAME}”,以便echo jeff_1.txt和jeff_2.txt(而不更改名称数组)?摆脱使用ALLCAPS变量名的习惯,将它们保留在shell中。总有一天,您将编写
PATH=something
,然后您的。如果每个名称都有多个文件要处理(例如jeff_1.txt、jeff_2.txt、jeff_3.txt),那么这些文件是否需要分别添加到名称数组中,或者是否有方法在以后调用不同版本的“jeff”文件?使用您的示例,我将如何更改echo“${NAME}”,以便echo jeff_1.txt和jeff_2.txt(而不更改名称数组)?摆脱使用ALLCAPS变量名的习惯,将它们保留在shell中。总有一天你会写
PATH=something
,然后你的。