所以你们都知道这个吗? Looping through the content of a file in Bash
所以我想要做的是将文件的内容循环到参数。哪些改变产出等
while read $1 & $2 & $3; do
#also tried:
#while read $1 $2 $3; do
echo ${1}
echo ${2}
echo ${3}
./${1}.sh & ./${2}.sh & ./${3}.sh
done <file.txt
#arguments aren't echoed
./script.sh: line 31: ./.sh: No such file or directory
./script.sh: line 31: ./.sh: No such file or directory
./script.sh: line 31: ./.sh: No such file or directory
#scripts aren't executed
apple_fruit
#$1
apple_veggie
#$2
veggie_fruit
#$3
pear_fruit
#$1
pear_veggie
#$2
veggie_fruit
#$3
这样循环,在这种模式中^^
apple_fruit apple_veggie veggie_fruit
pear_fruit pear_veggie veggie_fruit
我希望1美元被apple_fruit取代,2美元被apple_veggie取代,3美元被veggie_fruit取代。然后当它命中done
时,我希望它用pear_fruit替换$ 1,用pear_veggie替换$ 2,依此类推。
而且,为了让这个工作,你在输入这个脚本时不添加任何参数
script.sh
或者你真的要把东西放进去,如果你做了什么?因为论证总是会改变。
script.sh mystery mystery mystery
答案 0 :(得分:0)
您可以使用bash readarray
内置来将行读入数组(line
):
readarray line < file.txt
echo ${line[@]}
输出:
apple_fruit
apple_veggie
veggie_fruit
pear_fruit
pear_veggie
veggie_fruit
然后你可以做
printf './%s.sh & ' "${line[@]}" | sed 's/ \& $//'
输出
./apple_fruit.sh & ./apple_veggie.sh & ./veggie_fruit.sh & ./pear_fruit.sh & ./pear_veggie.sh & ./veggie_fruit.sh
答案 1 :(得分:0)
三行,三行read
:
while IFS= read -r l1
IFS= read -r l2
IFS= read -r l3
do
echo "$l1, $l2, and $l3"
done <<EOF
apple_fruit
apple_veggie
veggie_fruit
pear_fruit
pear_veggie
veggie_fruit
EOF
输出
apple_fruit, apple_veggie, and veggie_fruit
pear_fruit, pear_veggie, and veggie_fruit
这里没有真正的理由涉及位置参数;只使用常规变量。