bash - filename=${1:-/etc/hosts} 和 filename=/etc/hosts 的区别

本文介绍了一段Bash脚本示例,用于检查文件是否存在且非空,然后计算其MD5校验和。此外还讲解了如何使用Bash参数扩展特性来设置默认文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举例如下:

filename=/etc/hosts

if [ -r "$filename" ] && [ -s "$filename" ]; then
    md5sum $filename
else
    echo "$filename cannot be processed"
fi

filename=${1:-/etc/hosts}

if [ -r "$filename" ] && [ -s "$filename" ]; then
    md5sum $filename
else
    echo "$filename cannot be processed"
fi

如果 $1 为空或不存在,则把 /etc/hosts 赋值给 filename 变量,更一般的解释如下:

${parameter:-value} 如果 parameter 不存在或为空则用 value 替代表达式的值,否则用 parameter 替代表达式的值


点击此处查看问题来源

详情请参考 Bash Manual

[root@localhost opt]# ./download.sh --2025-07-31 22:58:26-- https://github.com/kubesphere/kubekey/releases/download/v3.1.10/kubekey-v3.1.10-linux-amd64.tar.gz 正在解析主机 github.com (github.com)... 20.205.243.166 正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 302 Found 位置:https://release-assets.githubusercontent.com/github-production-release-asset/248386471/bd547688-b9b7-4626-a24e-b46158a99d7e?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-08-01T03%3A42%3A50Z&rscd=attachment%3B+filename%3Dkubekey-v3.1.10-linux-amd64.tar.gz&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-08-01T02%3A41%3A51Z&ske=2025-08-01T03%3A42%3A50Z&sks=b&skv=2018-11-09&sig=DcINlCbzQSeX9%2FfBrCJmxvU29yQ%2FnL3USeEBnVKPzE4%3D&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1NDAxNzQwNywibmJmIjoxNzU0MDE3MTA3LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.T-Acka7omsqUozHloS2l_qdf4gk6r752kMkkvY1bF_I&response-content-disposition=attachment%3B%20filename%3Dkubekey-v3.1.10-linux-amd64.tar.gz&response-content-type=application%2Foctet-stream [跟随至新的 URL] --2025-07-31 22:58:27-- https://release-assets.githubusercontent.com/github-production-release-asset/248386471/bd547688-b9b7-4626-a24e-b46158a99d7e?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-08-01T03%3A42%3A50Z&rscd=attachment%3B+filename%3Dkubekey-v3.1.10-linux-amd64.tar.gz&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-08-01T02%3A41%3A51Z&ske=2025-08-01T03%3A42%3A50Z&sks=b&skv=2018-11-09&sig=DcINlCbzQSeX9%2FfBrCJmxvU29yQ%2FnL3USeEBnVKPzE4%3D&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1NDAxNzQwNywibmJmIjoxNzU0MDE3MTA3LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.T-Acka7omsqUozHloS2l_qdf4gk6r752kMkkvY1bF_I&response-content-disposition=attachment%3B%20filename%3Dkubekey-v3.1.10-linux-amd64.tar.gz&response-content-type=application%2Foctet-stream 正在解析主机 release-assets.githubusercontent.com (release-assets.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.111.133, ... 正在连接 release-assets.githubusercontent.com (release-assets.githubusercontent.com)|185.199.110.133|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:37244306 (36M) [application/octet-stream] 正在保存至: “kubekey-v3.1.10-linux-amd64.tar.gz” kubekey-v3.1.10-linux-amd64.tar.gz 100%[===========================================================================================================================>] 35.52M 216KB/s 用时 96s 2025-07-31 23:00:04 (380 KB/s) - 已保存 “kubekey-v3.1.10-linux-amd64.tar.gz” [37244306/37244306]) tar (child): kubekey-vv3.1.10-linux-amd64.tar.gz:无法 open: 没有那个文件或目录 tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now chmod: 无法访问'kk': 没有那个文件或目录 ./download.sh:行42: ./kk: 没有那个文件或目录 CentOS-8 - BaseOS - mirrors.aliyun.com 根据 错误完善脚本并重新生成下载脚本、部署脚本、优化脚本
最新发布
08-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值