我有一个简单的 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
将来,检查你的脚本这里。;)