Leo*_*nos 6 bash nautilus-script
所以脚本是:
#!/bin/bash
for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
if [[ "$line" = "" || "$line" = " " ]]; then
exit
else
unzip "$line" -d "temp"
fi
done
Run Code Online (Sandbox Code Playgroud)
它运行良好并解压缩文件。但是,如果文件以空格命名(例如:Leon - 1994.zip),它将不起作用,并且$line
将是
第一次:/home/citybong/Downloads/Leon
第二次:-
第三次:1994.zip
编辑:我为以下问题找到了一个链接http://g-scripts.sourceforge.net/faq.php:“我的脚本无法处理带有空格的多个文件/文件”,但我是 bash 脚本的新手,我可以不明白他们的解决方案
hyt*_*omo 10
IFS 默认设置为空格,这就是您的字符串被分成空格的原因。只需使用以下代码将其设置为换行符:
IFS_BAK=$IFS
IFS="
"
for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
whatever $line
done
IFS=$IFS_BAK
Run Code Online (Sandbox Code Playgroud)
你不需要搞乱 IFS:
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read filename; do
unzip "$filename" -d temp
done
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题,事实证明 echo 保留双引号中的换行符,但没有引号会将它们更改为空格。