bash:即使在使用shopt后脚本也无法正常工作

时间:2014-10-02 03:12:31

标签: bash

我正在使用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

1 个答案:

答案 0 :(得分:2)

您将zsh glob限定符与扩展模式混淆。在zsh(您的交互式shell)中,表达式*(om[1])om限定符应用于模式*。在bash中,扩展模式*(om[1])匹配模式om[1]的零次或多次出现(与文字字符串“om1”匹配)。由于没有匹配该模式的文件,因此将其传递给echo,并将其输出以作为name的值进行捕获。