我正在运行一个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
文件夹中,但这似乎不起作用。该文件应该在哪里?
答案 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.csv
与input_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