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

您将zshglob 限定符与扩展模式混淆了。在zsh(您的交互式 shell)中,表达式*(om[1])oandm限定符应用于模式*。在bash中,扩展模式*(om[1])匹配零次或多次出现的模式om[1](匹配文字字符串“om1”)。由于没有与该模式匹配的文件,因此将其按字面意思传递给echo,然后将其输出为name.

于 2014-10-02T03:54:58.170 回答