[英]While loop to test if a file exists in bash script
我正在尝试创建一个循环来提示用户创建文件。 如果文件已经存在,它会一直提示用户,直到用户输入一个不存在的文件。 但似乎无法让它工作,有人可以帮忙吗?
file3=/root/simulate/$filename
while true ; do
if [ ! -f "$file3" ]; then
read -p "Please enter a file name to create in simulate folder:" filename
touch /root/simulate/$filename
elif [ -f "$file3" ]; then
read -p "Please enter a different file name as $filename already exist:" filename
touch /root/simulate/$filename
break
else
touch /root/simulate/$filename
fi
done
文件名变量为空。
有两种方式填写文件名变量
文件名变量可以通过导出命令传递 shell 脚本。 ex) $export filename=newFile 如果您执行 shell 脚本,shell 正在分叉并执行新的 shell。 new shell 带走了你母壳的环境变量
将文件名变量推送到 shell 脚本中。
注意:我选择了第二种方式,并更改了 $file3 的路径。
我修复了 elif 块中的代码,以再次询问是否出现问题。
这是一个代码。
#!/bin/bash
filename=newFile
file3="./$filename"
while true ; do
if [ ! -f "$file3" ]; then
read -p "Please enter a file name to create in simulate folder:" filename
touch ./$filename
break
elif [ -f "$file3" ]; then
while true ; do
read -p "Please enter a different file name as $filename already exist:" filename
if [ ! -f "$filename" ]; then
touch ./$filename
break 2
fi
done
else
touch ./$filename
fi
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.