[英]Bash script change directory returns no such file or directory
我正在使用一个脚本,该脚本会读取目录的完整路径的输入(例如~/test
),但是当我运行shell脚本时,它会返回以下内容:
test-script.sh: line 34: cd: ~/test: No such file or directory
我在另一个目录中运行test-script.sh
文件,因此我假设这很简单:
脚本中的cd ~/test
可以做到,但我想不是。
我知道这可能是一个多余的问题,但是除了在脚本中执行简单的cd ~/test
之外,其他大多数问题/示例都涉及循环和其他情况。
作为参考,这就是我在脚本中所做的一切:
echo What directory do you want to change to?
read directory_name
cd $directory_name
同样,bash / shell脚本是新手,因此,如果还有其他想法或建议,我全力以赴。 谢谢!
解决方案1)
如果要使用〜 ,则需要使用eval。
#!/bin/bash
pwd
echo What directory do you want to change to?
read directory_name
eval "cd $directory_name"
pwd
但是这种解决方案是薄弱的,因为有人可以输入一些maliciuois命令而不是目录名来执行这个脚本。
解决方案2)检查directory_name的第一个字符是否为〜并将其替换为适当的值,它可以是当前用户主目录或另一个用户主目录。
你可以做CD〜或CD〜用户A切换到用户A主目录
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.