私はPerlでbashスクリプトを書き直しています。bashをPerlに翻訳する
元のスクリプトは、Linuxパッケージが未設定の状態にあるかどうかをチェックし、そうであれば削除して再インストールします。
#!/bin/bash
if [[ $(dpkg -l | grep libc-bin | grep iF) || $(dpkg -l | grep libc-dev-bin | grep iU) ]] ; then
echo "do something"
fi
は、私はちょうどこれらの複数の変数の
if
ステートメントを実行し、システムコールを使用して変数としてそれらを格納してことができるかどうかを確認するために始めました。これはうまくいかないようでした。
#!/usr/bin/perl
my $libcUnconfigured = system("dpkg -l | grep libc-bin | grep iF");
my $libcDevUnconfigured = system("dpkg -l | grep libc-dev-bin | grep iF");
if ($libcUnconfigured || $libcDevUnconfigured) {
print "Do something";
}
'system'は出力ではなく戻りコードを返します。代わりに 'qx //'を使用してください。 – simbabque
なぜperlでgrepを使っていますか? – 123
パッケージリストを取得する: 'my @libcUnconfigured = grep {/ libc-bin | iF /} qx(dpkg -l)'。 'qx'(" backticks ")はリストを返します。これは' grep'がフィルタリングしてリスト(配列)を取得します。 'qx'は'/bin/sh'またはシステムが提供するものを使用しますので、コマンドパスを指定する必要があります。 – zdim