我写了这个脚本:
是的,我知道这段代码不起作用,但也许我可以表达我的观点。
echo -n "Please enter your base directory name: "
read BASE
mkdir -p "$BASE"
mkdir -p "$BASE/$BASE1"
mkdir -p "$BASE/$BASE2"
mkdir -p "$BASE/$BASE3"
mkdir -p "$BASE/$BASE4"
mkdir -p "$BASE/$BASE5"
ls -d */
好吧,做了一些在线研究,我想我可能需要使用 glob,但我的教授确实没有提到它们。该脚本的要求是它要求提供一个基本目录名称,然后根据用户输入创建一个基本目录加上 5 个子目录,然后在 echo 或 ls 命令中输出创建的目录。
答案1
您需要将 $BASE 与数字 (1..5) 分开,否则 sh 会将您想要的内容解释为名为 例如 的变量。而不是给你附加$BASE1
的值。$BASE
1
这是脚本的已修复且略有改进的版本。
echo -n "Please enter your base directory name: "
read BASE
mkdir -p "$BASE" "$BASE/$BASE"{1..5}
ls -1d $BASE $BASE/*
如果您不使用 bash 或 zsh 或 ksh 或任何其他支持的 shell,{1..5}
那么您可以这样做:
echo -n "Please enter your base directory name: "
read BASE
mkdir -p "$BASE"
for i in 1 2 3 4 5 ; do mkdir -p "$BASE/$BASE$i" ; done
ls -1d $BASE $BASE/*
答案2
在 中bash
,我会这样做:
#!/usr/bin/bash
base="$1" #Get it from the argument, prompts for input aren't very unixy
mkdir -p "$base/$base"{1..5}
ls -d */
在dash
你不能使用{1..5}
,所以:
for i in `seq 5`; do mkdir -p "$base/$base${i}"; done