我想使用shell脚本创建多个目录,但不使用循环,只使用一行命令,但没有得到所需的结果

crcmnpdw  于 2023-01-05  发布在  Shell
关注(0)|答案(4)|浏览(130)

我正在编写下面的shell脚本,通过提供参数来生成多个目录。这是我的shell脚本“createDirectories1.sh“

#!/bin/bash

echo "$1"
echo "$2"
echo "$3"

mkdir $1{$2..$3}
#command mkdir $1{$2..$3}

我使用以下命令运行上述脚本

抨击createDirectories1.sh第一周和第五周

我的期望输出是Expected output
output which I am getting
This is how my terminal looks when giving commands to execute the script
我不确定何时运行此命令**mkdir week{1..5}**它工作正常,但当我使用shell脚本运行此命令时,它不工作
请帮助,让我知道什么修改是需要在我的 shell 脚本?

r9f1avp5

r9f1avp51#

必须使用eval命令。eval命令首先计算参数,然后运行存储在参数中的命令。

#!/bin/bash

echo "$1"
echo "$2"
echo "$3"

eval mkdir $1{$2..$3}
wixjitnu

wixjitnu3#

bash范围使用文字,而不是变量,所以需要某种方法来evalx 1 m1n1x; eval ing字符串的问题在于,您必须确保它不会咬到您:

#!/bin/bash

declare -a dirs="( $(printf '%q{%q..%q}' "$1" "$2" "$3") )"

mkdir "${dirs[@]}"
dzjeubhm

dzjeubhm4#

用于循环:

for ((i=$2; i<=$3; i++)); { mkdir "$1$i"; }

相关问题