發現三個 Shell 命令 md5sum
、sha1sum
、sha256sum
,發現用於文件下載辨別還是很有用處的。網絡上充斥着許許多多魔改的程序,有些改動可能是善意、玩鬧的,同時也包含一些改動是惡意的!我們無法保證所下載的資源沒有被修改,更不敢保證他們都沒有惡意。因此我們可以使用 md5 、 sha1、sha256 等一系列密碼散列函數進行驗證。
這里我們不過多的介紹 Shell 命令的具體使用方法,感興趣的朋友可以自行搜索或者* -help
。預期的效果類似與 mkdir -p /opt/demo/demo
簡單的花了半個小時進行查找資料發現了有三種方式可以在執行命令的時候動態的改變參數。
- 在執行 Shell 腳本的后面直接添加字符,例如創建一個'demo.sh'
#!/bin/bash
echo $1
echo $2$3
$ chmod +x demo.sh
$ ./demo.sh
$ ./demo.sh 4 5 6
4
56
$ ./demo.sh 14 5
14
5
$ ./demo.sh 14
14
$ ./demo.sh 14 4 14 14
14
414
- 使用
getopts
命令(獲知途徑)
#!/bin/bash
while getopts ":a:b:c:" opt
do
case $opt in
a)
echo "參數a的值$OPTARG"
;;
b)
echo "參數b的值$OPTARG"
;;
c)
echo "參數c的值$OPTARG"
;;
?)
echo "未知參數"
exit 1;;
esac
done
$ ./demo.sh -a 1 -b 2 -c 3
參數a的值1
參數b的值2
參數c的值3
$ ./demo.sh -a 1
參數a的值1
$ ./demo.sh -a 11 -d 2
參數a的值11
未知參數
- 使用
read
命令(獲知途徑)
#!/bin/bash
echo "請根據下面的提示輸入你想要設置的值"
read -p "var1= " var1
read -p "var2= " var2
read -p "你已經輸入了所有的變量值,是否立即打印?y/n:" print
if [ ${print}x == yx ];then
echo "var1= $var1"
echo "var2= $var2"
elif [ ${print}x == nx ];then
echo "complete"
else
echo unknow command
fi
$ ./demo.sh
請根據下面的提示輸入你想要設置的值
var1= 9
var2= 8
你已經輸入了所有的變量值,是否立即打印?y/n:y
var1= 9
var2= 8
ps: 出於惰性並沒有詳細的跟進以及解剖~~.
最后的階段性偷懶方案
#!/bin/bash
Var1=$1
Var2=$2
FilePath=$Var1
# echo $FilePath
md5=`md5sum "$FilePath"`
#unset FilePath
echo "md5:${md5}"
#echo "md5:$(md5sum "${FilePath}")"
echo "sha1:$(sha1sum "${FilePath}")"
echo "sha2:$(sha256sum "${FilePath}")"