【问题标题】:mkdir -p issue while bash scriptingbash 脚本时的 mkdir -p 问题
【发布时间】:2015-12-01 05:23:41
【问题描述】:

我正在尝试创建一个递归目录树,其中包含一些嵌套目录。

在 bash 中手动测试它时,它可以正常运行。但是,在 bash 脚本中测试此命令时,它被破坏了...而不是创建目录树,而是创建两个目录 '{dir1,dir2/',然后在第一个目录中创建 {subdir1,subdir2},dir3,dir4}。

命令如下:

mkdir -p main/{dir1,dir2/{subdir1,subdir2},dir3,dir4}

有什么想法吗?

谢谢!

【问题讨论】:

  • 不是创建目录树,而是在第一个目录中创建两个目录 '{dir1,dir2/' 然后 '{subdir1,subdir2},dir3,dir4}'。
  • 这按预期执行,您是否确定在这两种情况下都使用相同的命令?该脚本是否包含任何其他可能会更改此命令的命令?
  • 对我来说也一样。你确定你没有在sh/dash运行它吗?
  • 是的,我从我的 bash 脚本中复制并粘贴了命令。该命令手动工作,但不在脚本中。是的,我肯定在运行 bash。
  • @techno-shaman 运行bash -x yourscript,请发布输出

标签: bash mkdir


【解决方案1】:

您的脚本由/bin/sh 运行,在您的情况下不是bash,而是一些与Posix 兼容的shell,很可能是破折号。

大括号扩展是由不少shell实现的shell扩展,包括bash、ksh和zsh,但在dash中不可用。

确保你的 shebang 行指定了 bash:

#!/bin/bash

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 2011-03-17
    • 2012-09-08
    • 1970-01-01
    • 2017-03-15
    • 2011-02-14
    • 1970-01-01
    • 2011-03-18
    • 2017-05-22
    相关资源
    最近更新 更多