これは常に何も返しません: readlink $Somevar
. "${Somevar}"
、"$Somevar"
、$Somevar
、または${Somevar}
- 違いはありません。私は印刷を続けSomevar
ており、それが妥当な価値を持っていることを知っています。ターミナルで入力$Somevar
するだけで(スクリプトをエコー/「デバッグ」して相対パスを取得し、中止すると)、絶対パスが得られます。しかし、スクリプト内で絶対パスを取得できる必要があります。
変数と一緒に readlink を使用することはまったく可能ですか? 率直に言って、変数が渡されていることを readlink がどのように「知っている」のかわかりません。スクリプトでも、 readlink が呼び出される前にシェルによって展開されると思いました。「」を使用してターミナル(sansスクリプト)でテストしました~/_src
。それが機能する唯一の方法は、引用符なしでそれを書くことです。しかし、その値を変数に割り当てると、マシン上の他のすべての機能がそれで動作しますが、readlink.
どうすれば絶対パスを取得できますか? readlink を使用してもかまいません。スクリプトで相対から絶対パスを取得したいだけです。
更新:(スタックオーバーフローのコメントが壊れています)
Linux としてタグ付けしました。シンボリックリンクも翻訳したいので readlink をお願いしましたが、別のステップでそれを行っても問題ありません。
また、これも失敗しますABSDIR=`cd $RELDIR; pwd`
:
bash: cd: ~/_src/: No such file or directory
(そのようなディレクトリがあり、端末に正確なディレクトリ名を入力すると見つかります。)端末自体によって展開されているとcd
推測しています。~/
では、そのようなパスを処理する方法はありませんか? どうやら、これらのパスを処理していると思われるすべてのユーティリティは、ターミナルがパスを呼び出す前にパスを展開するためにのみ機能していました。