说我有以下代码,
mkdir $1 # Output that the folder was created and the name echo "The folder was created and name is: `echo $1`" touch $2 # Output that the file was created and the name echo "The file was created and name is: `echo $2`"
我怎样才能将创build的文件移动到创build的参数文件夹?
你需要使用命令mv
即mv $2 $1
touch "$1/$2"
假设$2
是一个简单的名字。 或者,如果您必须使用mv
,那么:
touch "$2" && mv "$2" "$1"
要么:
touch "$2" && mv "$2" "$1/$2"
您可能需要考虑如果$2
不是一个简单的文件名,但包含一些路径信息会发生什么情况。 在这种情况下,第一个“触摸和移动”组合可以说是更安全的。 请注意,这些版本在移动创建的文件之前检查touch
成功。 另外请注意,如果文件已经存在,那么touch
工作正常,并且该文件将被移动到目标目录。 如果文件不存在(尚),你必须再努力工作。 这就是这些问题的麻烦 – 有很多情况可能需要处理,但可能不是一个作业问题(但必须考虑更多的“生产代码”)。
否则,如果$2
可能是一个带有路径信息的名字:
mkdir "$1" || exit 1 base=$(basename "$2") touch "$1/$base" || exit 1
或者,如果你想移动,那么:
mkdir "$1" || exit 1 touch "$2" || exit 1 mv "$2" "$1"
请注意文件名称周围的引号; 即使名称中包含空格或其他尴尬字符,他们也会工作。 还要注意,如果$2
指定一个目录,那么mv
版本的东西将移动(新创建的) $1
目录下的整个目录。
mv $2 $1
是你在找什么?
mv $2 $1 echo "The file $2 was moved to $1"
请注意,在每个命令中不需要第二个echo
:
echo "The folder was created and name is: $1"
检查哪些命令可用于复制,或在此情况下移动您创建的文件。 另外,什么阻止你直接在创建的文件夹中创建文件?