问题引用命令参数的外壳变量

时间:2019-06-28 20:48:08

标签: bash quoting

我正在尝试编写一个bash脚本,该脚本从一系列midi文件中提取元数据,并将其作为id3标签应用于这些文件的mp3版本。一些元数据项包含空格,因此需要在命令行参数中引用id3标签编辑程序。

我已将问题简化为一个极简脚本,该脚本应通过执行以下命令结束:

ls -l "a b"

脚本try1和try2的两个版本及其输出如下所示。

pi@RPi02:~ $ cat try1
touch "a b"

file="a b"
params="-l $file"
ls $params
pi@RPi02:~ $ ./try1
ls: cannot access 'a': No such file or directory
ls: cannot access 'b': No such file or directory
pi@RPi02:~ $
pi@RPi02:~ $ cat try2
touch "a b"

file="a b"
params="-l \"$file\""
ls $params
pi@RPi02:~ $ ./try2
ls: cannot access '"a': No such file or directory
ls: cannot access 'b"': No such file or directory
pi@RPi02:~ $

很明显,第一个无法使用,因为我需要在文件名“ ab”周围加一个额外的引号,但是第二个版本中我添加了所需的引号也不起作用,但是我看不到为什么或如何解决。

0 个答案:

没有答案