Bash
無法遍歷archlinux的docker容器中bash中的所有文件?
我正在執行一個 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的特定包名稱處,並顯示以下消息:
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上發生這種情況?幫助將不勝感激。謝謝!
腳本中的以下行將執行其中的任何內容
$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"
有關的: