Linux 无法通过sh脚本创建数字目录
我有以下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更改为
#!/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
)