我在搞乱脚本,我可以创建一个脚本,当运行时提示我输入新目录的名称,创建它然后创建几个文件,回显行,然后将其全部删除。
我想做的是稍微变形它,以便它自己创建和命名目录!
我知道这似乎是一个毫无意义的练习,但搞砸它是我学习的最好方法。
这是我当前的脚本:
#!/bin/bash
echo "Give a directory name to create:"
read NEW_DIR
ORIG_DIR=$(pwd)
[[ -d $NEW_DIR ]] && echo $NEW_DIR already exists, aborting && exit
mkdir $NEW_DIR
cd $NEW_DIR
pwd
for n in 9 8 7 6 5 4 3 2 1 0
do
touch file$n
done
ls file?
for names in file?
do
echo This file is named $names > $names
done
cat file?
cd $ORIG_DIR
rm -rf $NEW_DIR
echo "Goodbye"
您可以通过以下方式为NEW_DIR变量设置硬编码值,而不是使用
read
命令从输入中获取值:NEW_DIR
替换脚本中的以下行:
使用以下行:
如果您想要一个惊喜,而不是硬编码名称,您可以使用一种技术来生成随机字符串,例如
这设置
NEW_DIR
为一个由八个字母数字字符组成的字符串。每次运行脚本时,新目录都会有一个不同的随机名称...或者要获得一个随机单词,请从字典中选择
/usr/share/dict/
并使用shuf
,例如:所以
您可以使用变量赋值运算符 (=) 将值硬编码到脚本中,而不是提示用户输入。因此,以下两行,
可以用单行代替。
顺便说一句,我知道这与问题无关,但是在
for
您在脚本中使用的循环中,您可以为该范围编写速记代码。而不是9 8 7 6 5 4 3 2 1 0
,您可以将其写为您甚至可以更进一步:您可以告诉“read”为文件夹名称提供建议,按回车键接受它或根据需要更改它:
这将显示一行:
要结合上述建议,您可以执行以下操作:
请注意, read -p "text" 将提示输入文本并在同一行中询问答案。如果你想坚持你的代码并让它要求你可以做的 2 行格式