繁体   English   中英

While循环测试bash脚本中是否存在文件

[英]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        

文件名变量为空。

有两种方式填写文件名变量

  1. 文件名变量可以通过导出命令传递 shell 脚本。 ex) $export filename=newFile 如果您执行 shell 脚本,shell 正在分叉并执行新的 shell。 new shell 带走了你母壳的环境变量

  2. 将文件名变量推送到 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM