无法在bash脚本中找到文件?

时间:2019-08-02 10:02:14

标签: windows bash

我正在运行一个shell脚本,该脚本期望目录中有一个文件,但是我似乎找不到它。

这是我的shell脚本

 #!/usr/bin/env bash

    # expects a file to be present in current directory called INPUT_FILE
    # this is the value set in the jenkins config

        if [ ! -f INPUT_FILE ] ;then
            echo "file ${INPUT_FILE} does not exist"
            exit 1
        fi

在Windows中,我从这样的目录中运行Shell脚本

D:\scripts> ./all/script.sh

我尝试将INPUT_FILE.csv放在scripts文件夹中,也放在all文件夹中,但这似乎不起作用。该文件应该在哪里?

2 个答案:

答案 0 :(得分:0)

确保您具有正确的文件名。 当您寻找INPUT_FILE.csv使用时,Windows隐藏文件的扩展名

if [ ! -f INPUT_FILE.csv ] ;then
   echo "file INPUT_FILE.csv does not exist"
   exit 1
fi

您尝试使用变量INPUT_FILE。如果需要,请尝试

input_file="INPUT_FILE.csv"
if [ ! -f "${input_file}" ]; then
   echo "file ${input_file} does not exist"
   exit 1
fi

还要注意,bash区分大小写,因此INPUT_FILE.csvinput_file.csv不同。

答案 1 :(得分:0)

最好先列出文件,以验证扩展名和目录中的所有文件名,然后检查文件是否存在。

#!/usr/bin/env bash
ALL_FILES=$(ls -I "*.sh") # This will list all file except .sh
echo "Files in current Directory $ALL_FILES"
INPUT_FILE="INPUT_FILE" # or     INPUT_FILE="INPUT_FILE.csv" 
     if [ ! -f $INPUT_FILE ] ;then
            echo "file ${INPUT_FILE} does not exist"
            exit 1
    else
          echo "file  exist ${INPUT_FILE}"
          exit 0

fi

第一个优势,它将列出所有文件,第二个优势,如果存在,您将获得输出。 enter image description here