首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有通配符和括号的ls在控制台中工作,但在脚本中不工作。

具有通配符和括号的ls在控制台中工作,但在脚本中不工作。
EN

Ask Ubuntu用户
提问于 2022-08-27 09:22:20
回答 2查看 922关注 0票数 5

命令

代码语言:javascript
复制
ls /etc/pve/lxc/*([0-9]).conf

在控制台

中工作

  • 结果:文件找到了!
代码语言:javascript
复制
/etc/pve/lxc/107.conf

但不在脚本

  • #!/bin/bash
  • 结果:错误
代码语言:javascript
复制
syntax error near unexpected token `('
ls /etc/pve/lxc/*([0-9]).conf

,然后我屏蔽了脚本

中的括号

代码语言:javascript
复制
ls /etc/pve/lxc/*\([0-9]\).conf
  • 结果:没有找到文件
代码语言:javascript
复制
ls: cannot access '/etc/pve/lxc/*([0-9]).conf': No such file or directory
EN

回答 2

Ask Ubuntu用户

发布于 2022-08-27 12:25:11

表达式*([0-9]).conf是KSH风格的扩展glob.该特性默认为交互式bash shell启用,但要在bash脚本中使用它,必须使用

代码语言:javascript
复制
shopt -s extglob

另见在命令行上工作但不是在bash脚本中工作的通配符扩展.

票数 15
EN

Ask Ubuntu用户

发布于 2022-08-27 10:03:16

您没有提供的信息是脚本中使用了哪个命令解释器。这是由谢邦,即第一行(例如。#/bin/sh)。

在Ubuntu中,控制台默认运行bash作为交互式shell。如果您的脚本使用另一个命令解释器(例如/bin/sh ),那么bash特有的语法将无法工作。

票数 7
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1425956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档