使用 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