脚本Shell:案例问题

时间:2017-02-03 00:05:22

标签: bash shell sh

当您选择桌面文件时,我有一个脚本,但是当我运行此案例函数时:

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

它总是告诉我,我必须再试一次,我不知道问题是什么,有人可以帮助我吗?

1 个答案:

答案 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