我试图创建一个脚本,要求我添加一个文件路径并存储它,然后一直问我是否要存储更多,直到我说不。我然后想让它问我想要什么文件夹在所有以前的文件路径中创建和创建该文件夹。问题是dir数组似乎只记得最新的条目?这就是我所拥有的。
#!/bin/bash
x="1"
yn="y"
while [ "$yn" == "y" ]; do
read -p "Add a Directory" add
dir=("${dir[$x]}" "$add")
echo ${dir[$x]}
x=$(( $x + 1))
read -p "Do you want to add another directory?: " yn
done
while [“$ yn”==“y”];做 read -p“你想把这个文件称为什么?:”folderName #will创建一个循环,使用dir数组和文件名var。
创建目录read -p "Do you want to add another file to these directories? : " yn `
答案 0 :(得分:1)
使用这种更简单的形式:
#!/bin/bash
dir=()
while
read -p "Add a Directory " add
dir+=("$add")
echo "$add"
read -p "Do you want to add another directory?: " yn
[[ $yn == [yY] ]]
do
continue
done
# Do something with "${dir[@]}" e.g.
mkdir -p -- "${dir[@]}"
此外,您可以使用-e
启用路径名的完成。这将使您更容易指定目录:
read -ep "Add a Directory " add
请注意,我添加了--
,这将允许您添加具有类似选项的文件名的目录。
更新:您还可以添加支票:
while
read -p "Add a Directory " add
if [[ -n $add ]]; then
echo "$add"
dir+=("$add")
else
echo "Directory name is invalid."
fi
read -p "Do you want to add another directory?: " yn
[[ $yn == [yY] ]]
do
continue
done
用于指定另一个参数:
#!/bin/bash
dir=()
while
read -p "Add a Directory " add
dir+=("$add")
echo "$add"
read -p "Do you want to add another directory?: " yn
[[ $yn == [yY] ]]
do
continue
done
read -p "Folder name: " folder
fullpaths=("${dir[@]/%//$folder}")
mkdir -p -- "${fullpaths[@]}"
答案 1 :(得分:1)
问题出在以下几行:
dir=("${dir[$x]}" "$add")
你想说:
dir=("${dir[@]}" "$add")
(这样说也可以避免需要计数器x
。)