0

私はLinuxを使用しています。以下は私が試しているスクリプトです。フォルダー内の最新の変更されたファイルを取得しようとしています:

#!/bin/bash
shopt -s extglob
name=$(echo *(om[1]))
echo $name

*(om[1])代わりにファイル名がエコーされることを期待しています。そのため、スクリプトは、shopt の使用によるエラーを発生しません。

コマンドラインでコマンドを試してみると、出力としてファイル名が表示されます。

% cd other
% echo *(om[1])
mumbai123.txt

なぜecho *(om[1])に取り組んでいるcommandlineのに bash ではないのですかscript

4

1 に答える 1

2

zshグロブ修飾子と拡張パターンを混同しています。(zsh対話型シェル) では、式はおよび修飾子を pattern に*(om[1])適用します。では、拡張パターンはパターンの 0 回以上の出現と一致します (これは、リテラル文字列「om1」と一致します)。そのパターンに一致するファイルがないため、文字どおり に渡され、 の値としてキャプチャされるように出力されます。om*bash*(om[1])om[1]echoname

于 2014-10-02T03:54:58.170 に答える