在 Bash 脚本中连接目录路径时出错

在 Bash 脚本中连接目录路径时出错

我有一个简单的 bash 文件并想要执行 cd 命令:

#!/bin/bash
dir_path="~/Desktop/param_bind_b"
cd $dir_path

出于某种原因,当我尝试在终端中运行该脚本时,出现此错误:

student@ubuntu:~$ openptv_current_install.bash /home/student/Desktop/scripts/openptv_current_install.bash: 第 3 行:cd: ~/Desktop/param_bind_b: 没有此文件或目录

当我“手动”运行命令时,cd ~/Desktop/param_bind_b它会按预期运行。

我在这里遗漏了什么?

答案1

当波浪符号 ( ~) 放在引号内时,shell 不会对其进行扩展。只需删除引号即可:

#!/bin/bash
dir_path=~/Desktop/param_bind_b
cd "$dir_path"

答案2

另一个解决方案是,只将 放在~引号外面或使用$HOME代替。此外,您还应|| exit在 后面添加cd

#!/bin/bash
dir_path=~"/Desktop/param_bind_b"
cd "$dir_path" || exit

或者

#!/bin/bash
dir_path="$HOME/Desktop/param_bind_b"
cd "$dir_path" || exit

因此您可以使用其他变量,例如

#!/bin/bash
desktop_dir="/Desktop"
dir_path=~"$desktop_dir/param_bind_b"
cd "$dir_path" || exit

或者

#!/bin/bash
desktop_dir="/Desktop"
dir_path=~"$desktop_dir"/param_bind_b
cd "$dir_path" || exit

或者

#!/bin/bash
desktop_dir="/Desktop"
dir_path="$HOME$desktop_dir"/param_bind_b
cd "$dir_path" || exit

将来,检查你的脚本这里;)

相关内容