![Nautilus“脚本”菜单选项从文件名中删除百分号](https://linux22.com/image/1090508/Nautilus%E2%80%9C%E8%84%9A%E6%9C%AC%E2%80%9D%E8%8F%9C%E5%8D%95%E9%80%89%E9%A1%B9%E4%BB%8E%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E5%88%A0%E9%99%A4%E7%99%BE%E5%88%86%E5%8F%B7.png)
使用 Nautilus“脚本”右键菜单选项执行以下脚本,文件名包含百分号,则会从文件名中删除百分号和下一个字符。例如,如果文件名为uvw10%xyz,脚本将打印uvw10yz到文件 abc.txt。
#!/bin/bash
echo "$1" >> abc.txt
任何字符,甚至是空格,都可以跟在百分号后面,但问题仍然存在。我意识到它在终端上是有效的;这不是问题所在。关键是它在作为 Nautilus 脚本运行时不起作用。
这是怎么回事?我该如何解决?
显然,正确的文件名可以像这样打印:
while read line; do
[ "$line" ] && echo "$line"
done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" > abc.txt
但我仍然想知道原始代码中的百分号发生了什么。
答案1
我认为uvw10%xyz有%X在其中。所以我猜它被认为是说明符,尽管它在终端上运行良好。尝试以下代码
#!/bin/bash
echo $1 >> abc.txt
你也可以尝试这个:
filepath=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS then name=${filepath##*/} then name=${name% then } then printf %s "$name"> abc.txt