【问题标题】:Xfces user defined action is not working whereas it's working in consoleXfces 用户定义的操作在控制台中工作时不起作用
【发布时间】:2015-04-08 21:38:45
【问题描述】:

我想在 Xfce 中使用用户定义的操作来转换图片。

所以我写了

for i in %F; do filename=$(basename "$i"); 
    extension="${filename##*.}";
    filename="${filename%.*}";
    convert -resize 1024 $i $filename-1024px.$extension;
done

但是这个不起作用......而当我在 shell 中执行它时(* 而不是 %F)它正在工作。

for i in *; do filename=$(basename "$i"); 
    extension="${filename##*.}";
    filename="${filename%.*}";
    convert -resize 1024 $i $filename-1024px.$extension;
done

我认为变量的存储有问题?

编辑:

这仍然有效:

for i in %F;
    do filename=$(basename "$i");
    extension="${filename##*.}";
    notify-send "$filename";
done

更改为以下代码后它停止工作:

for i in %F;
    do filename=$(basename "$i");
    extension="${filename##*.}";
    filename="${filename%.*}";
    notify-send "$filename";
done

【问题讨论】:

  • %F 应该是什么?
  • @EtanReisner %F — 所有选定文件的路径。例如。如果我这样做for i in %F; do notify-send "$i"; done,我会显示所有选定文件的完整路径。
  • 这是 xfce 动作的东西?那 sn-p 不工作怎么办?您是否在脚本中得到了%F
  • 是的,这是一个 Xfce action。我通常会得到%F,它正在处理简单的东西,比如上面的例子或for i in %F; do convert -resize 1024 $i $i; done
  • 那么究竟上面的 sn-p 是怎么回事?

标签: linux bash scripting xfce


【解决方案1】:

在 Xfces 中用户定义的操作 % 必须被转义。所以你需要在这里使用

filename="${filename%%.*}";

而不是

filename="${filename%.*}";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多