如何在调用Shell脚本时修改变量?附shell.sh示例
嘿,在调用Shell脚本时修改变量有好几种实用的方式,我给你整理了最常用的三种,每个都附上示例脚本和调用方法,一看就懂~
方法1:调用时直接给变量赋值(临时生效)
这种方式最直接,赋值的变量只会在当前脚本的执行环境中生效,不会影响你当前的Shell会话。
示例脚本 shell.sh
#!/bin/bash # 使用传入的变量,若未传入则用默认值 GREETING=${GREETING:-"Hello, World!"} USER_NAME=${USER_NAME:-"Guest"} echo "$GREETING, $USER_NAME!"
调用方式&效果
自定义变量调用:
GREETING="Hi there" USER_NAME="Alice" ./shell.sh输出:
Hi there, Alice!不传递变量(用默认值):
./shell.sh输出:
Hello, World!, Guest!
方法2:通过命令行参数传递
如果需要传递多个有序的参数,用命令行位置参数($1、$2...)是个不错的选择,脚本里直接读取这些参数即可。
示例脚本 shell.sh
#!/bin/bash # 读取命令行参数,$1是第一个参数,$2是第二个 # 若未传参则设置默认值 GREETING=${1:-"Hello, World!"} USER_NAME=${2:-"Guest"} echo "$GREETING, $USER_NAME!"
调用方式&效果
传递参数调用:
./shell.sh "Hey" "Bob"输出:
Hey, Bob!只传第一个参数:
./shell.sh "Good morning"输出:
Good morning, Guest!
方法3:通过环境变量传递
如果变量需要在多个脚本或进程间共享,或者你想提前设置好变量再调用脚本,可以用环境变量。
示例脚本 shell.sh(和方法1的脚本通用)
#!/bin/bash GREETING=${GREETING:-"Hello, World!"} USER_NAME=${USER_NAME:-"Guest"} echo "$GREETING, $USER_NAME!"
调用方式&效果
临时设置环境变量调用(仅当前脚本生效):
export GREETING="Welcome" export USER_NAME="Charlie" ./shell.sh或者更简洁的写法:
GREETING="Welcome" USER_NAME="Charlie" ./shell.sh输出都是:
Welcome, Charlie!若环境变量已全局设置,直接调用脚本就能读取到对应值~
内容的提问来源于stack exchange,提问作者evenom
相关产品推荐
相关产品推荐

