首个Bash脚本无法运行:接收参数输出Hello功能异常
解决Shell脚本参数输出错误的问题
嗨,我来帮你搞定这个Shell脚本的问题!你遇到的错误根源在于变量赋值的写法有误,咱们一步步拆解:
错误原因分析
你写的代码是:
$yourname=$1 echo "Hello $yourname"
Shell解析这行代码时会做两件事:
- 首先尝试展开
$yourname,但这个变量此时还没定义,所以会被替换成空字符串,整行就变成了=Mike echo "Hello "(当你传入参数Mike时)。 - Shell会把
=Mike当作要执行的命令,自然找不到这个命令,于是抛出=Mike: command not found的错误;后面的echo虽然会执行,但$yourname还是空的,所以只输出Hello。
正确的写法
你需要修正变量赋值的方式,有两种正确的写法:
写法一:分两行写(更清晰易读)
yourname=$1 echo "Hello $yourname"
这里要注意:变量赋值时,变量名前面不要加$,yourname=$1是正确的赋值语法,把第一个参数的值存入yourname变量,然后下一行用echo输出即可。
写法二:同一行用分号分隔
如果一定要写在同一行,需要用分号把赋值和echo命令分开:
yourname=$1; echo "Hello $yourname"
分号会告诉Shell这是两个独立的命令,先完成变量赋值,再执行echo输出。
现在保存修改后的脚本,执行bash hello.sh Mike,就能得到预期的Hello Mike输出啦!
内容的提问来源于stack exchange,提问作者Michael Brown
相关产品推荐
相关产品推荐

