CentOS 6.9システムで作業しながら、bashスクリプトに少し錆びました。私がやろうとしていることを詳しく説明する前に、参照用にこれまでのコードは次のようになります。
#!/bin/bash
package_name="<>"
yum list all > all_packages.txt
len=`expr length "$package_name"`
string=$((len-1))
while IFS= read -r line || "$line"; do
if [[${line:0:$string = $package_name}]]
then <>
私の究極の目標は、ユーザーが削除するパッケージを定義し、現在インストールされているパッケージをテキストファイルに保存し、そのファイルの行を比較して、指定されたパッケージに対応する行を確認し、新しいテキストファイルとして保存することです。 。 let "yum Remove"コマンドは、テキストファイル全体を繰り返してパッケージ全体を削除します。
私が今やっていることは、ユーザーが削除したいパッケージを取得し、その文字列の長さを取得してから、各行の最初のX文字をパッケージ自体と比較することです。一致しない場合は、行を削除して移動します。次の行に行きます。
この段階で私の問題は、指定されたパッケージと一致しない行を削除する方法がわからないことです。私がオンラインで見たところによると、「sed」または「grep」を使って行うことができますが、まだそれ以上ではありません。
すべての助けに事前に感謝!誠にありがとうございます!
ベストアンサー1
注意してくださいXYの問題。
依存関係でのみインストールされたパッケージを削除したい場合は、これを行うことがyum
できます。 eclipseが他のパッケージを依存関係としてインストールしますが、そのパッケージの名前に "eclipse"が含まれていない場合はどうなりますか?文字列の一致はこれには役立ちません。
から、ユーザーが手動でインストールしておらず、不要になったすべてのパッケージが削除されますman yum
。不要になった対応するパッケージとその依存関係のみが削除されます。yum autoremove
yum autoremove mypackage
使用時に自動的に削除するyum remove
には。"clean_requirements_on_remove=1"
/etc/yum.conf