第一次发帖,请对我宽容一些。 :)
很确定在研究这个问题时还没有人问过这个问题。
简短版本:如何告诉 shell 脚本使用一个命令而不是另一个命令,具体取决于我在哪个机器上运行 shell 脚本?示例:在框 1 上,我想运行 md5 file.txt
。在 Box 3 上,我想运行 md5sum file.txt
。我认为这是一个 IF 命令,如果 md5
的输出失败,请改用 md5sum
。只是不知道如何检查md5
的输出是否失败
长版:我使用了 3 个盒子。盒子 1 和 3 是来自盒子 2 的文件的接收者,当我在盒子 1/3 上调用脚本时,它们会接收该文件,如下所示:ftpget.sh file.txt
我有一个 shell 脚本,它执行 FTP GET 操作并从 Box 2 中获取文件。然后,它对 Box 2 中的源文件和目标文件执行 md5,目标文件将位于 Box 1 或 3 上,具体取决于我从哪一个执行了脚本。当然,哈希值必须匹配。
问题是这样的:代码编写为使用md5
,而Box 1使用md5,而Box 3使用md5sum
。因此,当我执行 Box 1 中的脚本时,效果非常好。当我从 Box 3 执行脚本时,它失败了,因为 Box 3 使用 md5sum,而不是 md5。
所以我在想:处理这个问题的最佳方法是什么?我无法安装任何东西,因为我不是管理员,而且管理机器的人可能也不会为我做这件事。我可以在我的 .profile 中创建一个类似于:alias md5="md5sum"
的别名吗?这样,当脚本在 Box 3 上运行时,它将执行 md5 file.txt
,但系统将真正执行 md5sum file.txt
,因为我创建了别名。
想法?更好的想法? :)
最佳答案
我不知道你用的是什么 shell 。这是针对 bash 的:
#!/bin/sh
md5=$(which md5)
if [ ! "${md5}" ] ; then
md5=$(which md5sum)
if [ ! "${md5}" ] ; then
echo "neither md5 nor md5sum found"
exit 1
fi
fi
${md5} $0
关于Shell 脚本和 md5/md5sum 命令 : need to decide when to use which one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7115504/