替换后向命令提供参数

替换后向命令提供参数

我试图从~/Pictures文件夹中获取文件名并将其作为命令的参数提供nomacs。文件名包含一些空格,因此我使用 Bash 替换来转义空格(我还想获取文件夹中的最后一个文件)。

代码:

names=$(\ls ~/Pictures * | tac) 
SAVEIFS=$IFS
IFS=$'\n'
names=($names)
IFS=$SAVEIFS
screenshot=~/Pictures/${names[0]}
screenshot=${screenshot// /\\ }
nomacs $screenshot

文件名示例:Screenshot from 2017-09-13 18-05-42.png

问题是这nomacs $screenshot不起作用,但当我执行时nomacs Screenshot\ from\ 2017-09-13 18-05-42.png,它会按预期工作。

我应该使用一些特殊的 Bash 技术来转义空格吗?

答案1

根据我从您的脚本中收集到的信息,您正在反转第一个项目的输出ls并选择第一个项目。这是使用 bash 执行此操作的另一种方法:

files=(~/Pictures/*)
nomacs "${files[-1]}"

这将使用 glob 扩展填充数组,~/Pictures/*然后将最后一个元素传递给nomacs程序。

相关内容