2017-12-05 16 views
0

私は変数に格納されたパスにCDを変更しようとしています。変数は、ファイルに格納されているテキストから値を取得します。変数bashに格納されたパスにディレクトリを変更する方法

これは、テキストファイル内の値を取得します:テキストファイル内の

devdir=$(<\$HOME/devdir.txt) 
cd $devdir 

はテキストです:私が得る$HOME/bin

エラーは次のとおりです。

/bin/dev: line 41: cd: $HOME/bin: No such file or directory 

これが結果です手動で入力するのに比べて、変数を使用しようとしています。

screen shot of text so you can't copy/paste it

UPDATE: これはCMDウィンドウで実行した場合、それはスクリプト内で、しかし、それは正常に動作しているとき、何も結果が得られていないように思わfabiotkによって与えられた改善、で与えられたバッシュの抜粋です... Snippetここで

は、これまで全体のスクリプトです:script 、ここでは私はそれが内部動作しません示すスクリプトを実行し、独自に指定した行を実行している:enter image description here

+0

代わりに、「PWDをパスに変更する」という意味でしたか? – Fabiotk

+0

私はちょうど現在のディレクトリを意味しました。だから私は、ディレクトリには、ユーザーが現在ファイルに格納されているに変更するには – Jaedlo

+1

*あなたの情報を画像として投稿しないでください。 https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-so-when-asking-a-question – tripleee

答えて

0

はこれを試してみてください:

か:

eval "cd \"$(cat $HOME/devdir.txt)\""; 

それはあなたが実行しているscriptセッション内のディレクトリを変更します。 ./scriptを実行した場合、外部にはありません

+0

これは、バックスラッシュなしで少しきれいに見える: 'cd $(eval 'echo" $ cat $ HOME/devdir.txt) "'')' –

+0

これはシェルで完璧に動作しますが、スクリプトの途中で何もしません。/ – Jaedlo

+0

これは奇妙です。私はここで簡単なスクリプトを作った。それはうまくいった。 'cd $(eval" echo \ "$(cat $ HOME/devdir.txt)\" "); ls -la; 'と' ls'はdevdirのパスの内容を表示します – Fabiotk

0

$HOMEという値は展開されません。それを展開したい場合は、evalという別の回答が投稿されているかもしれません。可能ならばevalを避けたいと思っています。特に、この特定の変数を展開する必要がある場合は特にそうです。

devdir=$(sed "s%^\$HOME/%$HOME/%" $HOME/devdir.txt) 
+0

代わりにそのセクションを実装した後、私はちょうど 'cd devdir'であれば、この作業が必要ですか? – Jaedlo

+0

いいえ、変数を展開する構文は 'cd" $ devdir "'です(この制限されたシナリオでは引用符は厳密には必須ではありませんが、 – tripleee

+0

元の投稿と同じエラーがコードに残っています – Jaedlo

関連する問題