Linux 无法通过sh脚本创建数字目录

Linux 无法通过sh脚本创建数字目录,linux,bash,shell,ubuntu,sh,Linux,Bash,Shell,Ubuntu,Sh,我有以下sh脚本: #!/bin/sh -e UPLOAD_DIR="/var/www/upload" mkdir -p "${UPLOAD_DIR}"{0..99} && chown -R www-data "${UPLOAD_DIR}"/* 但是上面的脚本没有创建从0到99的目录,而是生成名为{0..99}的单个文件夹。我做错了什么 编辑:谢谢你的回答。我在这篇文章里还有一个问题。如何使用两个符号的引线填充创建目录?例如01,02,10,11?将您的shebang更改为

我有以下sh脚本:

#!/bin/sh -e

UPLOAD_DIR="/var/www/upload"
mkdir -p "${UPLOAD_DIR}"{0..99} && chown -R www-data "${UPLOAD_DIR}"/* 
但是上面的脚本没有创建从0到99的目录,而是生成名为
{0..99}
的单个文件夹。我做错了什么


编辑:谢谢你的回答。我在这篇文章里还有一个问题。如何使用两个符号的引线填充创建目录?例如
01
02
10
11

将您的shebang更改为
#/bin/bash
要使用:

这个特性在ksh和zsh中也可用(可能更多),但是当您标记为时,我假设这就是您想要使用的

另一方面,您的代码中有一个微妙的错误-在传递给
chown
的参数中有一个
/
,而不是
mkdir
。我还将您的变量名更改为小写,因为所有大写变量名都应该保留给shell内部和外部


大括号扩展的一个很好的特性是,您可以使用
{00..99}
生成序列
00
01
02
99
。注意,这需要一个新的ish版本的bash(听说是4+)


感谢您的帮助输入。

将您的shebang更改为
#/bin/bash
要使用:

这个特性在ksh和zsh中也可用(可能更多),但是当您标记为时,我假设这就是您想要使用的

另一方面,您的代码中有一个微妙的错误-在传递给
chown
的参数中有一个
/
,而不是
mkdir
。我还将您的变量名更改为小写,因为所有大写变量名都应该保留给shell内部和外部


大括号扩展的一个很好的特性是,您可以使用
{00..99}
生成序列
00
01
02
99
。注意,这需要一个新的ish版本的bash(听说是4+)


感谢您的帮助输入。

将您的shebang更改为
#/bin/bash
要使用:

这个特性在ksh和zsh中也可用(可能更多),但是当您标记为时,我假设这就是您想要使用的

另一方面,您的代码中有一个微妙的错误-在传递给
chown
的参数中有一个
/
,而不是
mkdir
。我还将您的变量名更改为小写,因为所有大写变量名都应该保留给shell内部和外部


大括号扩展的一个很好的特性是,您可以使用
{00..99}
生成序列
00
01
02
99
。注意,这需要一个新的ish版本的bash(听说是4+)


感谢您的帮助输入。

将您的shebang更改为
#/bin/bash
要使用:

这个特性在ksh和zsh中也可用(可能更多),但是当您标记为时,我假设这就是您想要使用的

另一方面,您的代码中有一个微妙的错误-在传递给
chown
的参数中有一个
/
,而不是
mkdir
。我还将您的变量名更改为小写,因为所有大写变量名都应该保留给shell内部和外部


大括号扩展的一个很好的特性是,您可以使用
{00..99}
生成序列
00
01
02
99
。注意,这需要一个新的ish版本的bash(听说是4+)


感谢您的帮助输入。

或。。。让它成为一个函数,这样如果您运行的是bash,那么您就不必担心需要sh bang:UNTESTED

 md_chown () { mkdir -p "$1"/{00..99} && chown -R www-data "$1"/{00..99}; }
并援引:

 md_chown /var/www/upload

或者。。。让它成为一个函数,这样如果您运行的是bash,那么您就不必担心需要sh bang:UNTESTED

 md_chown () { mkdir -p "$1"/{00..99} && chown -R www-data "$1"/{00..99}; }
并援引:

 md_chown /var/www/upload

或者。。。让它成为一个函数,这样如果您运行的是bash,那么您就不必担心需要sh bang:UNTESTED

 md_chown () { mkdir -p "$1"/{00..99} && chown -R www-data "$1"/{00..99}; }
并援引:

 md_chown /var/www/upload

或者。。。让它成为一个函数,这样如果您运行的是bash,那么您就不必担心需要sh bang:UNTESTED

 md_chown () { mkdir -p "$1"/{00..99} && chown -R www-data "$1"/{00..99}; }
并援引:

 md_chown /var/www/upload


/bin/sh
不支持该大括号语法。此问题已在ServerFault上交叉发布:
/bin/sh
不支持该大括号语法。此问题已在ServerFault上交叉发布:
/bin/sh
不支持该大括号语法。此问题已在ServerFault上交叉发布:
/bin/sh
不支持该大括号语法支持大括号语法。这个问题已在ServerFault上交叉发布:感谢您的回答,但我通过
sh./script.sh
执行脚本。如果我将
/bin/sh
更改为
/bin/bash
如何运行脚本?@Erik您应该使用
bash script.sh
执行脚本,或使其可执行(例如
chmod+x script.sh
)然后直接运行它
/script.sh
sh
bash
应该被视为两个独立的程序。如果要使用bash功能,请不要使用
sh
。感谢您的响应,但我通过
sh./script.sh
执行脚本。如果我将
/bin/sh
更改为
/bin/bash
如何运行脚本?@Erik您应该使用
bash script.sh
执行脚本,或使其可执行(例如
chmod+x script.sh
)然后直接运行它
/script.sh
sh
bash
应该被视为两个独立的程序。如果要使用bash功能,请不要使用
sh
。感谢您的响应,但我通过
sh./script.sh
执行脚本。如果我将
/bin/sh
更改为
/bin/bash
如何运行脚本?@Erik您应该使用
bash script.sh
执行脚本,或者使其可执行(例如
chmod+x script.sh