Bash脚本更改目录不返回任何此类文件或目录

时间:2018-06-24 17:00:38

标签: bash shell cd

我正在使用一个脚本来读取目录的完整路径的输入(例如~/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 个答案:

答案 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