Bash: 将变量作为 mv 命令选项传递

4

--Bash 4.1.17 (运行于Cygwin)

你好,我正在尝试将日期传递到move(mv)命令的--suffix选项中。我能够传递简单的字符串(比如我的名字),但无法传递日期。如果您运行下面的脚本,您会发现带有suffix="$var"的mv命令有效,而suffix="$now"则无效。

#!/bin/bash

dir="your directory goes here"

now="$(date "+%m/%d/%y")"

var="_CARL!!!"

echo "$now"

echo "$var"

cd "$dir"

touch test.txt

# error if already exists
mkdir ./stack_question

touch ./stack_question/test.txt

mv -b --suffix="$var" test.txt ./stack_question/

这个想法是,如果在移动文件时test.txt已经存在,那么文件名将会添加后缀。因此,如果您使用以下命令运行脚本:

--suffix="$var"

你会看到stack_question目录包含两个文件:

test.txt & test.txt_CARL!!!

但是,如果你运行这个脚本:

--suffix="$now"

你会发现,在 stack_question 目录下仅包含:
test.txt
非常感谢任何提供的帮助!

你的后缀名中有一个斜杠。在文件名中这是不合法的。但我不确定为什么“mv”命令会默默地忽略它。 - Etan Reisner
@arco444 在脚本中不会生效。历史扩展在那里默认是未激活的。 - Etan Reisner
1个回答

0

这是因为您在日期格式中嵌入了/

now="$(date +%m_%d_%y)"

没错!就是这样。谢谢 @iharob - carl_corder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接