这些都不是符合POSIX标准的用法,而是bash所特有的。所以,要简单点的话,就将声明改为bash,即 #!/bin/bash。
当然,还有两处小错,要仔细点:
var =(1 2 3 3 5)#赋值时等号两边不能有空格
echo "${#var}#引号不成对啊,这里也可以不要引号的
命令后面的分号其实也是多余的,只要换行了,分号就不需要(当然加了也没错)
注意,命令引起来的是tab键上面那个,而不是单引号解释:
md5sum a.txt的结果例如是
3a5cacda937fbe71fcb72cfe4904dee8 a.txt
前面是MD5值,a.txt是你指定的文件名,我们要取前面那部分,有2个方法:
方法一,也就是xiehuahere的回答:
a[1]=`md5sum a.txt | cut -d' ' -f1`
其中cut的-d,是指定空格为分隔符,-f1是指定取分隔后的第一个字串,就是我们要的MD5值了。
方法二:
md5sum a.txt | awk -F ' ' '{print $1}'
awk的-F ' ',是指定空格为分隔符,是指定空格为分隔符,是指定取分隔后的第一个字串,也是我们要的MD5值。
赋值除了使用“`”反引号,还可以这样,例:
a[1]=$(md5sum a.txt | cut -d' ' -f1)
a[1]=$(md5sum a.txt | awk -F ' ' '{print $1}')
如果是bash,可以用数组,比如下面的循环,对每一个关键字 (赵钱孙里)处理一次
declare -A data
for key in zhao qian sun li zhao sundo
if [ -z "${data[$key]}" ]then
data[$key]=1
else
let data[$key]++
fi
done
for key in ${!data[@]}do
echo "$key occured ${data[$key]} times"
done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)