Bash 스크립트를 실행 중입니다.
#!/bin/bash
touch archlinux_log.txt
touch packages_not_in_archlinux.txt
while read line; do
if pacman -Q --info $line ; then
pacman -Q --info $line >> archlinux_log.txt
else
echo "No Package info for $line"
$line >> packages_not_in_archlinux.txt
fi
done<"$1"
그러나 여기서 내가 직면하고 있는 매우 구체적인 문제는 스크립트가 항상 다음과 같은 줄에서 멈춘다는 것입니다.딤 엔지다음 메시지를 표시합니다.
dirmngr[10701.0]: permanently loaded certificates: 141
dirmngr[10701.0]: runtime cached certificates: 0
dirmngr[10701.0]: trusted certificates: 141 (141,0,0,0)
나는 아무런 문제 없이 Debian과 Fedora에서 동일한 스크립트를 실행했습니다. 모든 패키지가 스캔됩니다. Archlinux에서 왜 이런 일이 발생하는지에 대한 힌트가 있습니까? 귀하의 도움에 크게 감사하겠습니다. 감사해요!
답변1
스크립트의 다음 줄은 의 모든 내용을 실행 $line
하고 출력을 다음에 추가합니다 packages_not_in_archlinux.txt
.
$line >> packages_not_in_archlinux.txt
$line
로 확장된 경우 dirmngr
이는 스크립트의 해당 지점에서 실행될 명령입니다.
$line
출력 파일에 문자열을 저장할 수 있습니다 .
printf '%s\n' "$line" >>packages_not_in_archlinux.txt
변수를 올바르게 인용하고 두 번 실행하지 않는 전체 스크립트 pacman
:
#!/bin/sh
tmpfile=$(mktemp)
while IFS= read -r package; do
if pacman -Q --info "$package" >"$tmpfile"
then
cat "$tmpfile" >>archlinux_log.txt
else
printf 'No package info for %s\n' "$package"
printf '%s\n' "$package" >>packages_not_in_archlinux.txt
fi
done <"$1"
rm -f "$tmpfile"
관련된: