これは、テキスト ファイルから値をインポートすることに関連する別の質問です (私の以前のものと似ています) が、複雑さが増します (bash スクリプトについて学べば学ぶほど、難しくなります)
目標: 各外側ループの反復で Day_.... の配列を作成します。*.txt ファイルに Day_... リストがいくつ存在するかを知らないと仮定して、これを実行しようとしています。
問題: 現時点では、内部ループは 1 回だけ反復します ( の要素の数として反復する必要がありますMonday
。また、my_sub_dom=$( sed 's/=.*//' weekly.txt )
weekly.txt のリスト/配列の数を取得し、 を含むものをフィルター処理するために使用していますDay
。
バッシュスクリプト:
#!/bin/bash
source weekly.txt
declare -a my_sub_dom
day=( ${Monday[*]} )
my_sub_dom=$( sed 's/=.*//' weekly.txt ) # to construct a list of the number of of lists in the text file
#echo "${my_sub_dom}"
counter=0
main_counter=0
for i in "${day[@]}"
do
let main_counter=main_counter+1
for j in "${my_sub_dom[@]}"
do
# echo "$j"
if grep -q "Day" "${my_sub_dom}"
then
echo "$j"
sub_array_name="${my_sub_dom[counter]}" # storing the list name
sub_array_content=( ${sub_array_name[*]} )
echo "${sub_array_content}"
else
echo "no"
fi
let counter=counter+1
done
echo "$counter"
counter=0
完了 echo "$main_counter"
テキストファイル形式:
Day_Mon=( "google" "yahoo" "amazon" )
Day_Tu=( "cnn" "msnbc" "google" )
Day_Wed=( "nytimes" "fidelity" "stackoverflow" )
Monday= ( "one" "two" "three" )
....
スクリプト出力:
grep: Day_Mon
Day_Tu
Day_Wed
Monday: No such file or directory
no
1
grep: Day_Mon
Day_Tu
Day_Wed
Monday: No such file or directory
no
1
grep: Day_Mon
Day_Tu
Day_Wed
Monday: No such file or directory
no
1
3
他の情報が必要な場合はお知らせください....そして、この件に関するご意見をお寄せいただきありがとうございます。私はこれを数日間試しています。
ありがとうございました