
このような最小操作が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