我希望用户输入可以驻留在任何位置的文件名,但文件的名称在最后.i.e中是固定的。 ABC。 TXT
假设用户输入的文件名为/usr/test/abc.txt,它位于我的脚本中的第二个位置参数
我想让下面的陈述真实,我该如何实现这个
if [ $2 == ..../abc.txt ]
谢谢, Ruchir
答案 0 :(得分:4)
Let suppose the the user inputs the file name as /usr/test/abc.txt which comes in second positional parameter in my script
I want to make below statement as true how can I achieve this
使用if
:
shell glob
条件
if [[ "/$2" == *"/abc.txt" ]]; then
echo "valid match"
fi
答案 1 :(得分:1)
您可以使用basename获取文件名的最后一个组件。
prompt> cat foo.sh
#!/bin/sh
if [ "abc.txt" == `basename $2` ]; then
echo "found .../abc.txt"
fi
prompt> foo.sh foo /a/b/c/abc.txt
found .../abc/txt
答案 2 :(得分:0)
if [[ $2 == *"/abc.txt" ]]; then
echo "It ends with abc.txt";
fi
此处解释了为什么[[ ]]
与[ ]
相比有效...
答案 3 :(得分:0)
if ( echo "$2" | grep 'abc.txt$' >/dev/null ) ; then ... ; else .... ; fi
或
if ( echo "$2" | grep '/abc.txt$' >/dev/null ) ; then ... ; else .... ; fi
(如果你还需要“/”那么?)