Unix - 使用脚本空间寻址文件名

Unix - 使用脚本空间寻址文件名

我有文件Deep.flacA1 - Rolling In The Deep.flac

我编写了下面的脚本,但是它只能使用Deep.flac 它似乎无法使用带有空格的文件名。我正在通过我的 OSX 学习 UNIX 系统。

基本上,我用来sox将 flac 转换为 aiff,同时保持文件名不变。

我的脚本转换X2Y.sh:

#!/bin/bash

# Author: Rei Yash Dean
# Copyright: Free
# Script: to convert flac files to aiff using sox; while keeping file name unchanged

for x in *.flac;
do sox $x $(basename $x .flac).aiff;
done

它返回的错误是:

sox FAIL formats: can't open input file `The': No such file or directory

答案1

引号围绕您希望程序将其视为单个参数的事物:

sox "$x" "$(basename "$x" .flac).aiff"

如果您使用双引号(如上),那么您可以像$x在其中一样使用变量引用。如果你使用单引号( '...') 那么您在其中使用的任何特殊字符都将按照您编写的方式保留。

相关内容