linux shell 命令定义和使用数组出错

linux shell 命令定义和使用数组出错,第1张

实际上,bash中可以直接对数组赋值的,不需要使用declare。而且取长度的用法${#var}也只能是在bash中。

这些都不是符合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}')


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11662580.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存