我正在使用一个脚本来读取目录的完整路径的输入(例如~/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脚本的新手,因此,如果还有其他想法或建议,我全力以赴。谢谢!
答案 0 :(得分:0)
解决方案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〜usera 更改为 usera homedir