2つの類似した配列間の要素の比較

2つの類似した配列間の要素の比較

このような最小操作がBの要素を選択するが、Aの要素は選択しないと仮定する。

file_list1=(a.sh b.sh c.sh)
file_list2=(b.sh c.sh d.sh)

for i in files_list1; do
    for k in files_list2; do
        if [[ $k in $(echo $i) ]]; then
        echo 
        else
        echo $k
        fi
    done
done

エラーが報告されます。

$ bash compare.sh 
compare.sh: line 5: conditional binary operator expected
compare.sh: line 5: syntax error near `in'
compare.sh: line 5: `        if [[ $k in $(echo $i) ]]; then'

そうでない場合、inコードが機能するようにするにはどうすればよいですか?

ベストアンサー1

ロジックに加えて、次の構文エラーがあります。

  • そうではfile_listありませんfiles_list
  • 配列要素に拡張するには、「${file_list[@]}」を使用する必要があります。

努力する住宅検査出版前に。

シェルでこれを行う必要がある場合は、以下を試してください。

file_list1=(a.sh b.sh c.sh)
file_list2=(b.sh c.sh d.sh)

for i in "${file_list1[@]}"; do
    repeated_in_A=0
    for k in "${file_list2[@]}"; do
        if [[ $k == $i ]]; then
            repeated_in_A=1
        break 
        fi
    done
    ((repeated_in_A)) || echo "$k"
done

おすすめ記事