我正在写我的第一个bash脚本作为家庭作业的一部分,由于covid 19,我们无法在课堂上复习其中的一些东西(我也没有做好谷歌搜索)。
我正在编写一个脚本,该脚本接受用户输入并搜索cd以查找名为$userInput的文件。如果找到,脚本将确定该文件是否为“普通文件”(例如.txt)或该文件是否为目录。如何收集此信息?
下面是我目前的代码:
#! /bin/bash
$userInput
echo "Enter a file name. Empty to exit."
while [ 1 ]
do
echo "Please input a file name:"
read userInput
if [ "$userInput" == "" ]; then
exit
else
echo $userInput
fi
done我有循环和获取用户输入,我在这里遗漏了什么?
发布于 2020-03-27 12:34:34
if cd $userInput*; then
cd ..
echo "It is a directory."
else
# the cd will do the rest of informing for you
fi我还强烈建议将其转换为文件,并在命令行中获取用户输入,如下所示:
bash ./yourcode.sh filename
在你的代码中:
if cd $1*; then
cd ..
echo "It is a directory."
else
# the cd will do the rest of informing for you
fi编辑后的:EXTRA
如果你真的想知道发生了什么,请继续在这里。在bash中,每个命令/函数默认返回一个值,通知内核它是否成功终止或出错,为了简单起见,我们假设它在成功终止时返回true,如果没有成功则返回false。在这里,我将这段信息与函数cd一起使用,该函数将当前目录更改为指定的目录,如果更改成功,它将返回true,然后我将在if语句中捕获该值以执行代码,这包括返回原始目录(cd ..)并告诉用户这是一个目录。否则,cd将返回false,并自行告诉您发生了什么,它是一个文件还是不存在,* (通配符)的存在是为了查找它可能具有或甚至没有的任何扩展名。我希望这能有所帮助,干杯!
发布于 2020-03-27 15:46:02
有几种方法可以对条目进行分类。例如,
[[ -f $filename ]]测试常规文件,
[[ -d $filename ]]测试目录,还有其他测试,您可以在其中测试符号链接,或者您是否具有读/写/执行权限。您可以找到可用的文件测试操作符here的列表。
https://stackoverflow.com/questions/60879107
复制相似问题