![텍스트 파일을 업데이트하는 스크립트를 작성하는 방법은 무엇입니까?](https://linux55.com/image/57955/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 이 스크립트를 만들었습니다:
#PACKAGES.TXT
array2=(
`find . -type f -iname *t?z|awk '{print $1}'|cut -d / -f 3`
)
funzioneZ() {
echo -e " PACKAGE NAME: $i "
}
array3=(
`find . -type f -iname *t?z|awk '{print $1}'|cut -d / -f 1,2`
)
funzioneA() {
echo -e " PACKAGE LOCATION: $i "
}
array4=(
`for i in */*txz;do xz -l $i |tail -n 1|cut -d . -f 1|awk '{print $3, "K"}'; done`
)
funzioneB() {
echo -e " PACKAGE SIZE (compressed): $i "
}
rm MANIFEST2
for i in ${array2[@]};do funzioneZ $i >> MANIFEST2;done
for i in ${array3[@]};do funzioneA $i >> MANIFEST2;done
for i in ${array4[@]};do funzioneB $i >> MANIFEST2;done
실제 결과:
PACKAGE NAME: pam-1.1.8-x86_64-2mg.txz
PACKAGE NAME: tvtime-1.0.2-x86_64-3_SBo.txz
PACKAGE LOCATION: ./a
PACKAGE LOCATION: ./x
PACKAGE SIZE (compressed): 453
PACKAGE SIZE (compressed): 606
그러나 나는 결과가 다음과 같기를 원합니다.
PACKAGE NAME: pam-1.1.8-x86_64-2mg.txz
PACKAGE LOCATION: ./a
PACKAGE SIZE (compressed): 453
PACKAGE NAME: tvtime-1.0.2-x86_64-3_SBo.txz
PACKAGE LOCATION: ./x
PACKAGE SIZE (compressed): 606
어떻게 해야 하나요?
답변1
해결책 찾기: 깨끗하고 단순함
for i in ${array1[@]};do echo -e "PACKAGE NAME:$i " >> MANIFEST2 && echo -e "PACKAGE SIZE: `xz -l $i |tail -n 1|cut -d . -f 1|awk '{print $3, "K"}'`" >> PACKAGES.TXT
PACKAGE NAME:a/pam-1.1.8-x86_64-2mg.txz
PACKAGE SIZE: 453 K
PACKAGE NAME:x/tvtime-1.0.2-x86_64-3_SBo.txz
PACKAGE SIZE: 606 K