我可以验证文件是否存在于shell脚本中的位置?

时间:2015-02-17 12:41:47

标签: linux shell

目前我有一个shell参数作为文件名。

类似的东西,

./myshellscript -inpufile=/data/username/Inputfile.xml

我正在尝试使用cut获取文件名 然后使用-f进行检查,但

时无法正常工作
-inputfile=~/user/inputfile.xml 

我需要验证输入文件是否出现在/data/username/位置 或包含~的位置。 它没有取绝对值。

2 个答案:

答案 0 :(得分:0)

如果我理解正确:

#!/bin/bash

FILE=`basename /data/username/Inputfile.xml`

if [ -e /data/username/$FILE ];
then
   echo "File $FILE exists."
else
   echo "File $FILE does not exist."
fi

答案 1 :(得分:0)

这个怎么样:

file=$1

# Normalize the file
absdir=$(dirname $file)
fname=$(basename $file)
absname="$absdir/$fname"

echo "Absolute file name: $absname"

if [ -f $absname ] ; then
    echo "$absname exists"
else
    echo "$absname NOT FOUND"
fi

示例输出:

$ script.sh /tmp/postgres.log 
Absolute file name: /tmp/postgres.log
/tmp/postgres.log exists

$ script.sh ~/../../tmp/postgres.log 
Absolute file name: /Users/karel/../../tmp/postgres.log
/Users/karel/../../tmp/postgres.log exists

因此它会对~进行规范化,但不会使../正常化。希望这会有所帮助..