小编Log*_*ion的帖子

在Bash中解析命令行参数的最佳方法?

经过几天的研究,我仍然无法找到在.sh脚本中解析cmdline args的最佳方法.根据我的参考资料,getopts cmd是要走的路,因为它"在不干扰位置参数变量的情况下提取和检查开关.意外的开关或缺少参数的开关被识别并报告为错误. "

当涉及空格但是可以识别常规和长参数(-p和--longparam)时,位置参数(例如2 - $ @,$#等)显然不能正常工作.我注意到,当使用嵌套引号传递参数时,这两种方法都会失败("这是"引用""引号"".").这三个代码示例中哪一个最能说明处理cmdline args的方法?大师不推荐使用getopt函数,所以我试图避免它!

例1:

#!/bin/bash
for i in "$@"
do
case $i in
    -p=*|--prefix=*)
    PREFIX=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`

    ;;
    -s=*|--searchpath=*)
    SEARCHPATH=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
    ;;
    -l=*|--lib=*)
    DIR=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
    ;;
    --default)
    DEFAULT=YES
    ;;
    *)
            # unknown option
    ;;
esac
done
exit 0
Run Code Online (Sandbox Code Playgroud)

例2:

#!/bin/bash
echo ‘number of arguments’
echo "\$#: $#"
echo ”

echo ‘using $num’
echo "\$0: $0"
if [ $# -ge 1 ];then …
Run Code Online (Sandbox Code Playgroud)

bash command-line getopts

11
推荐指数
2
解决办法
5万
查看次数

MD5与GPG签名

根据apache使用GPG签署文件(生成校验和)等网站比普通的旧MD5更安全.我不明白为什么大多数人使用MD5代替.有人可以解释普通技术英语的真正差异吗?

md5 gnupg

3
推荐指数
1
解决办法
3238
查看次数

MD5进度输出 - BASH

我在工作中得到了一个简单的MD5SUM脚本.除了显示进度的部分(已经计算给用户的文件的百分比)之外,它几乎完成了.我正在考虑使用带有虚拟变量的while循环来检查是否已经计算了MD5.唯一的问题是md5sum(在linux上)不会返回任何类型的反馈,除非计算出实际的md5sum.因此,很难向用户显示已处理了多少文件.这是脚本的副本.

#!/bin/bash

#MD5 verification tool
#1st argument is file name of .iso, and the 2nd argument is the the MD5 hexsum.

echo Checking file $1 .....  
#calc md5 for file
SUM=`md5sum $1`
#insert while loop here?
#compare values
test $SUM = $2 && echo original || echo False 

#8cd98b693ce542b671edecaed48ab06d8c
# GNOME-64.iso

exit 0
Run Code Online (Sandbox Code Playgroud)

bash md5sum

2
推荐指数
1
解决办法
3875
查看次数

标签 统计

bash ×2

command-line ×1

getopts ×1

gnupg ×1

md5 ×1

md5sum ×1