如何让Bash脚本中变量动态获取当前执行目录路径?
解决Bash脚本中动态获取当前目录路径的问题
原脚本存在两个关键问题:
- 变量赋值语法错误:赋值时变量名前不应加
$,正确写法是MY_SPECIAL_FILE="$(pwd)/hello.txt" - 静态赋值导致路径固定:
$(pwd)会在脚本执行时一次性获取初始工作目录,后续切换目录后变量值不会自动更新
要实现每次输出当前所在目录下的hello.txt路径,有两种实用方案:
方案一:使用函数动态计算
将变量替换为函数,每次调用时实时获取当前工作目录:
#!/bin/bash MY_SPECIAL_FILE() { echo "$PWD/hello.txt" }
使用方式:
# 切换到banana目录后执行 echo $(MY_SPECIAL_FILE) # 输出 banana/hello.txt # 切换到apple目录后执行 echo $(MY_SPECIAL_FILE) # 输出 apple/hello.txt
方案二:直接使用内置变量$PWD
如果不需要封装成变量/函数,可直接在需要的地方使用"$PWD/hello.txt",每次引用都会实时获取当前目录:
# 切换到banana目录后执行 echo "$PWD/hello.txt" # 输出 banana/hello.txt
注:
$PWD是Bash内置变量,会自动跟随当前工作目录变化,比调用pwd命令更高效。
内容的提问来源于stack exchange,提问作者JeanieJ
相关产品推荐
相关产品推荐

