bash - 如何通过 "mySync leftdir rightdir"等特定命令使我的同步 bash 脚本可执行?

标签 bash unix ubuntu

我正在为 Ubuntu 中的 Unix 创建一个同步两个目录的 bash 脚本。

我已经编写了同步程序,但我面临的问题是我需要通过命令行调用我的脚本:“ mySync -r leftdir rightdir ”或“ mySync -i leftdir rightdir ”我似乎没有这行得通。

-r (递归)将覆盖所有重复的文件夹。

-i 只有在用户同意的情况下才会覆盖重复的文件夹

问题是如何通过命令使我的脚本可执行?

如果选择了“-i”命令,我怎样才能让我的脚本在覆盖之前等待用户的接受?

在此先感谢您的帮助 。

代码是:

    #!/bin/bash

    echo "hello,the directory must be on the Desktop. "
    read -p "Please enter your username: " x3

    read -p "First directory name: " x1
    read -p "Second directory name: " x2

    dir1="/home/$x3/Desktop/$x1/"
    dir2="/home/$x3/Desktop/$x2/"

    if [ -d $dir2 ]; then
    cd "$dir1"

    find . -print0 | while read -d $'\0' file; do
    [ -e "$dir2/$file" ] || echo "$file"
    done

    cp -rupv $dir2* $dir1

    else
    echo Path Not found.. Check network status
    fi


    if [ -d $dir1 ]; then
    cd "$dir2"
    find . -print0 | while read -d $'\0' file; do
    [ -e "$dir1/$file" ] || echo "$file"
    done

    cp -rupv $dir1* $dir2

    else
    echo Path Not found.. Check network status

    fi

最佳答案

首先,你为什么不直接使用 rsync ?

如果你真的想自己做,我建议使用 getoptgetopts做选项解析。然后您可以根据这些选项控制执行...

要使脚本可执行,您可以使用 chmod:
$ chmod +x mySync

关于bash - 如何通过 "mySync leftdir rightdir"等特定命令使我的同步 bash 脚本可执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325769/

相关文章:

sql-server - 如何从 Ubuntu 调试 MSSQL 驱动程序问题

linux - 如何找到文件中特定行的字节位置

linux - 为什么 Dockerfile 中的命令会失败,而在容器中手动运行它却可以正常工作?

java - 如何将 java 方法的输出分配给 bash 脚本变量

java - 从正在运行的 java 程序的内存中定位并读取特定类型的对象

c++ - 链接器返回 "relocation has an invalid symbol at symbol index..."

bash - 如何在 awk 脚本中使用 shell 变量?

bash - 当今最好的(可移植和可维护的)Shell 脚本语言是什么?

linux - 使用 Wget 获取长 URL

linux - GitHub 永远在 Ubuntu 11.04 上推送/pull