我试图从~/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
程序。