Bash 脚本在 运行 时抛出 "missing operand" 的错误

Bash script is throwing the error of "missing operand" when ran

我是 bash 的新手,正在尝试接受 2 个参数,参数 1 是复制文件所在的新目录的名称。参数 2 是要复制的文件。参数 3 是新文件的名称。但是,当 运行 时,我不断收到 mkdir 缺少操作数错误消息。感谢您的帮助!!

    #!/bin/bash
    dir=
    oldFile=
    newFile=
    mkdir $dir
    cp  $dir
    cd $dir
    mv  

全新,此版本涵盖所有案例...

#!/bin/bash

# Verify number of arguments
if [[ $# -ne 3 ]]
then
    echo "Missing arguments."
    echo "1: new directory name"
    echo "2: existing file to copy in the directory"
    echo "3: new filename"
    exit 1
fi

# Verify arguments values
dir=""
if [[ -d "$dir" ]]
then
    echo "Directory $dir already exists.  Cannot proceed."
    exit 2
fi

oldfile=""
if [[ ! -f "$oldfile" ]]
then
    echo "The second arguments must be an existing file.  Cannot procees."
    exit 3
fi

newfile=""
# no check to do here.

# Create the directory
mkdir "$dir"
if [[ ! -d "$dir" ]]
then
    echo "ERROR: directory $dir could not be created.  Aborting."
    exit 4
else
    echo "INFO: created directory $dir"
fi

# Copy the file into the directory, with the new name
cp "$oldfile" "$dir/$newfile"
if [[ ! -f "$dir/$newfile" ]]
then
    echo "ERROR: the existing file ($oldfile) could not be copied and renamed ($newfile)."
    exit 5
else
    echo "INFO: the existing file ($oldfile) was copied and renamed ($newfile) in the $dir directory."
fi

这个脚本:

  • 验证参数个数是否正确
  • 验证目录是否已经存在
  • 验证旧文件确实存在
  • 验证文件的目录创建和复制重命名已成功完成

记得:

  • 总是"你的变量
  • 始终检查脚本命令的状态,您永远不知道在所有情况下会发生什么
  • rmmv要超级谨慎,如果你有意想不到的行为,你可以放手。

调用脚本:

./thescript.bash newdirectory oldfilename newfilename

它将为您提供文件目录结构:

$ ls
oldfile
newdirectory/newfilename