当您选择桌面文件时,我有一个脚本,但是当我运行此案例函数时:
File=$(yad --file);
if [[ "$File" =~ *".desktop" ]]; then
echo "yes"
else
echo "no"
if
我试试这个:
File=$(yad --file);
case $File in
*.desktop )
echo "yes"
;;
* )
echo "no"
;;
esac
它总是告诉我,我必须再试一次,我不知道问题是什么,有人可以帮助我吗?
答案 0 :(得分:2)
我不确定这个剧本应该做什么,但试试这个:
File="$(Yad --file)"
if [[ "$File" =~ .*[.]desktop$ ]]; then
echo "yes"
else
echo "no"
fi
Bash正则表达式匹配(=~
)使用扩展正则表达式,而不是glob表达式。要指定零个或多个字符的任何序列,您需要使用.*
。 .
表示"任何字符",*
表示零次或多次。 [.]
指定一个字面句点,避免使用"任何字符"单独使用.
的含义。我还添加了一个行结束锚($
)。这会强制模式与文件名的末尾匹配,正如您在扩展时匹配时可能需要的那样。
第一行中也有错误。 $
符号和括号之间不能有空格。要关闭if
块,您需要使用fi
。
您可以使用与bash条件匹配的glob样式匹配,只需使用等号:
if [[ "$File" = *.desktop ]]; then