如何在 shellscript 中 cp mv 或命令到一个包含特定字符的变量中设置的文件名?

问题描述 投票:0回答:1

我通过控制台运行我的脚本。

sh ./application.sh CurriculumVitae\ \(January\ 2020\).pdf

包含反斜杠以允许特殊字符转义。

application.sh 我需要对这个输入文件进行复制,所以我运行下面的代码来实际添加这些反斜杠并复制它。

ORIGINAL_FILE="$1"
COMMAND_FILE=$( echo "$ORIGINAL_FILE" | sed 's/ /\\ /g' )

eval cp "$COMMAND_FILE" ".temp/"

其中$1是 CurriculumVitae (January 2020).pdf 和$ORIGINAL_FILE为 CurriculumVitae\ \(January\ 2020\).pdf.

但我的 eval cp "$COMMAND_FILE" ".temp/" 失败,出现以下错误。

./application.sh: eval: line 52: syntax error near unexpected token `('
./application.sh: eval: line 52: `cp CurriculumVitae\ \(January\ 2020\).pdf .temp/'

我怎么能在变量中解决这个问题?谢谢。

bash shell escaping args
1个回答
0
投票

这三行命令应该简单地替换为这一条。cp "$1" ".temp/"

© www.soinside.com 2019 - 2024. All rights reserved.