带变量的bash副本

zaf*_*zaf 2 macos bash

我正在尝试使用bash脚本将文件复制到当前目录.

为了处理需要转义的路径,使用了一个转义变量然后提供给cp命令的变量.

cp命令抱怨:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Run Code Online (Sandbox Code Playgroud)

我知道这意味着什么,但我无法理解为什么会这样.

这是代码:

z="/a/b/c d (e) f.txt"
y=`printf %q "$z"`
cp $y x.txt      # not working as expected
echo cp $y x.txt # output is "cp /a/b/c\ d\ \(e\)\ f.txt x.txt"
Run Code Online (Sandbox Code Playgroud)

Lau*_*ble 5

注意:当您遇到bash脚本问题时,应该使用该-x选项运行它,因为它提供了第一级调试.

文件名的转义不正确.你应该使用:

cp "$z" x.txt
Run Code Online (Sandbox Code Playgroud)