ユーザーにファイルの場所を尋ねるプロンプトを表示し、それを絶対パスに変換するスクリプトを作成しています。
これが私が今まで持っているものです。これをどのように接続するのかわかりません。
もちろんです。
read -e -p "Enter a path to a file: " PATH
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
echo Absolute path is $CONVERTPATH
答え1
~のため追加、追加の引用符を削除するだけです。
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
到着
CONVERTPATH="$(pwd $PATH)/$(basename $PATH)"
しかし、いくつかの問題もあります。
pwd
引数は許可されません。dirname
指定された場合は引数を使用できます。- このコマンドは名前を次のように
read
設定しません。PATH
name
- コマンド
echo
は完全に引用されていません。
そしてそれら修正すると、次のような結果が得られます。
#!/bin/bash
read -e -p "Enter a path to a file: " name
CONVERTPATH="$(dirname $name)/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
誰かが変数を使用してプロンプトに応答する状況は処理しません。また、意図した用途はpwd
絶対ディレクトリを取得する可能性が最も高いです。さらに交換してみてください。
#!/bin/bash
read -e -p "Enter a path to a file: " name
head=$(dirname "$name")
head=$(cd "$head" && pwd)
CONVERTPATH="$head/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
しかし、それでもやりたいことはありません。考える。 (あなたの観点から見ると)問題は、pwd
OSXでは、システムがコマンドのシンボリックリンクに基づいた結果のみをエコーすることですcd
。これはOSXの珍しい現象ではなく、たとえばエントリチェーンに沿って正しい操作を実行するためにcd
権限なしでディレクトリに入ることを可能にする長いUnix動作です。pwd
..
結果にシンボリックリンクが含まれていない絶対パス名が必要な場合は、別のアプローチを取る必要があります。 OSXではrealpath
- しかし、コマンドラインにはありません。他のシステムでは利用可能readlink -f
しかし、ここではありません。
このトピックに関する一般的な議論: