0

ここに問題があります:

現在のディレクトリに文字列「osl-guest」と「.tar.gz」があるファイルをループするbashforループを使用し(「ls」コマンドを使用、以下の出力例を参照)、コマンド「tar-」を実行します。ファイルに実行可能ファイルが設定されていない場合にのみ、各ファイルに個別にzxf'を追加します。たとえば、ファイル'file1'に対して'tar -zxf'コマンドを実行するには、コマンドは次のようになります。tar -zxf file1

「ls-l」の出力例:

-rw-r--r--   1 lance lance   42866 Nov  1  2011 vmlinuz-2.6.35-gentoo-r9-osl-guest_i686.tar.gz
-rwxr-xr-x   1 lance lance   42866 Nov  1  2011 vmlinuz-3.4.5-gentoo-r3-osl-guest_i686.tar.gz
-rw-r--r--   1 lance lance   42866 Nov  1  2011 vmlinuz-3.5.3-gentoo-r2-osl-guest_i686.tar.gz
4

1 に答える 1

1

を呼び出す必要なく、次の方法でループを実行できますls

# For each file matching the pattern
for f in *osl-guest*.tar.gz; do
    # If the file is not executable
    if [[ ! -x "$f" ]]; then 
            tar -zxf $f;
    fi; 
done;

*osl-guest*.tar.gz、それを呼び出すのではなく、必要なファイルのリストを取得するためにシェル展開を使用するだけですls

このifステートメントは、ファイルが実行可能かどうかをチェックします。 は-x実行可能ファイルのテストであり、 を使用!すると結果が否定されるためif、ファイルが実行可能でない場合にのみブロックに入ります。

于 2013-01-30T17:20:02.050 に答える