首頁  >  問答  >  主體

linux - shell脚本中如何获取md5值并curl这个值

需求是动态生成每天的日期,md5这个日期,然后curl到一个网址。
我第一次用shell,研究了下,初步代码如下:

#!/bin/bash
a=`date '+%Y-%m-%d'`
echo $a
code=$($a|md5sum|cut -d '' -f1)
echo $code
echo -n $a|md5sum
curl -v http://www.abc.com/report/?code=$code

问题1:md5sum赋值到变量和直接echo的值是不一致的
问题2:curl如何不打印请求的结果

阿神阿神2742 天前800

全部回覆(2)我來回復

  • 黄舟

    黄舟2017-04-17 14:38:47

    問題一:沒遇到md5sum賦值到變數和直接echo的值是不一致的的情況

    [root@localhost ~]# md5sum email.txt 
    6b15e74bf464475b4e18a9aa208b10d8  email.txt
    [root@localhost ~]# cat email.txt 
    i@catscarlet.com
    [root@localhost ~]# echo i@catscarlet.com|md5sum
    6b15e74bf464475b4e18a9aa208b10d8  -
    [root@localhost ~]# 
    
    [root@localhost ~]# a='i@catscarlet.com'
    [root@localhost ~]# echo $a|md5sum 
    6b15e74bf464475b4e18a9aa208b10d8  -

    你的程式碼至少在bash下是沒辦法運行第四行的

    [root@localhost ~]# bash -x test.sh  
    ++ date +%Y-%m-%d
    + a=2016-03-30
    + echo 2016-03-30
    2016-03-30
    ++ 2016-03-30
    test.sh: line 4: 2016-03-30: command not found
    ++ cut -d '' -f1
    ++ md5sum
    + code='d41d8cd98f00b204e9800998ecf8427e  -'
    + echo d41d8cd98f00b204e9800998ecf8427e -
    d41d8cd98f00b204e9800998ecf8427e -
    + echo -n 2016-03-30
    + md5sum
    a450f2d7030074e211755cdde0d41a57  -
    [root@localhost ~]# 

    問題2:
    curl -s 你的网址 -o /dev/null

    問題1補充:

    [root@localhost www]# date '+%Y-%m-%d'
    2016-03-30
    [root@localhost www]# date '+%Y-%m-%d'|md5sum
    3a2f84ded4cc91e1276040cf0f27a681  -
    [root@localhost www]# echo 2016-03-30 |md5sum 
    3a2f84ded4cc91e1276040cf0f27a681  -

    你的腳本中

    a=`date '+%Y-%m-%d'`

    這段表示將date的輸出結果複製給a,現在a的值是2016-03-30
    到下一行

    code=`$a|md5sum`

    其實就變成

    code=`2016-03-30|md5sum`

    2016-03-30又不是什麼指令,直接語法錯誤了。

    懶一點你也可以這麼寫啊:

    #!/bin/bash
    a=`date '+%Y-%m-%d'`
    code=`echo -n $a|md5sum`
    echo $code
    echo -n $a|md5sum

    PS:echo 要加 -n ,不然會因為換行而影響輸出結果。我前面的程式碼就沒加,md5變成3a2f84ded4cc91e1276040cf0f27a681了。 2016-03-30正確的md5值應該是a450f2d7030074e211755cdde0d41a57。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 14:38:47

    我需要把產生好的md5值賦到code,然後在其他地方引用code
    程式碼整理下,以下輸出md5還是不一致

    #!/bin/bash
    a=`date '+%Y-%m-%d'`
    code=`$a|md5sum`
    echo $code
    echo -n $a|md5sum

    回覆
    0
  • 取消回覆