我正在尝试将CD更改为存储在变量中的路径。变量从存储在文件中的文本中获取其值。
这将获取文本文件中的值:
devdir=$(<\$HOME/devdir.txt)
cd $devdir
文本文件中包含文字:$HOME/bin
我得到的错误是:
/bin/dev: line 41: cd: $HOME/bin: No such file or directory
与手动输入变量相比,这是尝试使用变量的结果:
更新: 这是Bash的片段,给出了fabiotk给出的改进,当它在脚本中时似乎没有结果,但是当它在cmd窗口中运行时工作正常...... Snippet
到目前为止,这是整个脚本:script 这是我自己运行给定的行,然后运行脚本显示它在内部不起作用:enter image description here
答案 0 :(得分:0)
试试这个:
cd $(eval "echo \"$(cat $HOME/devdir.txt)\"");
或:
eval "cd \"$(cat $HOME/devdir.txt)\"";
它将更改您正在运行的script
会话中的目录。如果您运行./script
,则会赢得cd
外部
答案 1 :(得分:0)
$HOME
的价值未得到扩展。如果你想扩展它,另一个答案中发布的eval
可能有所帮助;但是如果可以的话,我们通常希望避免eval
,特别是如果你只需要扩展这个特定的变量。
devdir=$(sed "s%^\$HOME/%$HOME/%" $HOME/devdir.txt)