如何通过./a.sh $t形式获取Shell脚本中的变量配置值?
Shell脚本传参问题解决
问题原因
你执行./a.sh $t时,这里的$t是当前终端Shell环境里的变量,和脚本a.sh内部定义的t=1232完全是两个独立的变量。脚本里的t是脚本运行时自身创建的局部变量,当前终端Shell根本不知道它的存在,所以你传的$t实际上是空值,脚本里的echo $1自然输出空。
解决方案
方案1:让当前Shell拿到变量值再传参
直接在终端先定义变量,再执行脚本:
t=1232 ./a.sh $t
或者把变量定义和脚本调用放在同一行,让变量临时生效:
t=1232 ./a.sh $t
方案2:修改脚本自动传参
如果想通过./a.sh触发,让脚本自己把内部的t值作为参数传入,修改a.sh如下:
#!/bin/bash t=1232 # 检查是否有传入参数,没有就自己调用自己并传t的值 if [ -z "$1" ]; then ./a.sh "$t" else echo "$1" fi
之后直接执行./a.sh,脚本就会自动输出1232。
方案3:直接传固定值
如果t=1232是固定值,没必要绕弯子,直接写死参数:
./a.sh 1232
内容的提问来源于stack exchange,提问作者hisktskr
相关产品推荐
相关产品推荐

