Bashscript 使变量等于命令。找不到错误命令

oct*_*rot 3 command-line bash md5sum

嗨,我不断收到错误消息

./imagehash.sh: line 2: =: command not found
Run Code Online (Sandbox Code Playgroud)

当我知道我$CMD正确设置了变量时(我在 bash 脚本之外尝试了该命令并且它工作得很好)

这是我的 bash 脚本

#!/bin/bash
 $CMD='md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd'
 echo $CMD
Run Code Online (Sandbox Code Playgroud)

更新

修复了 bash,因此$CMD变量中没有空格并将其放在''它周围,但现在我收到了错误文件,no such file or directory我查看了路径并将其逐个复制,并且是正确的。

我在这里做错了什么?

0x2*_*fa0 15

工作示例

#!/bin/bash
CMD="$(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd)"
echo $CMD
Run Code Online (Sandbox Code Playgroud)

解释

  1. 要分配变量,请不要在$等号前放置符号,也不要在等号周围放置空格。bash中的变量赋值是这样的:

    MYVAR="CONTENT"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要使用命令的输出创建变量,您可以使用$(command). 这将执行command并返回其输出。

  3. 的输出md5sum将是这样的:

    f110abe5b3cfd324c2e5128eb4733879 image.dd
    
    Run Code Online (Sandbox Code Playgroud)

    如果要隔离文件名的 md5 总和,可以改用以下行之一:

    CMD="$(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd | cut -d ' ' -f 1)"
    CMD=($(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd))
    
    Run Code Online (Sandbox Code Playgroud)

  • 也请不要忘记引用 $CMD。你可以使用这个工具来检查你的脚本:http://www.shellcheck.net/ (2认同)