目前我有一个shell参数作为文件名。
类似的东西,
./myshellscript -inpufile=/data/username/Inputfile.xml
我正在尝试使用cut
获取文件名
然后使用-f
进行检查,但
-inputfile=~/user/inputfile.xml
我需要验证输入文件是否出现在/data/username/
位置
或包含~
的位置。
它没有取绝对值。
答案 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
因此它会对~
进行规范化,但不会使../
正常化。希望这会有所帮助..