(鹦鹉螺脚本)$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; 空间有问题

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)


Jan*_*k37 5

你不需要搞乱 IFS:

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read filename; do
    unzip "$filename" -d temp
done
Run Code Online (Sandbox Code Playgroud)

我遇到了类似的问题,事实证明 echo 保留双引号中的换行符,但没有引号会将它们更改为空格。