パラメータが場所へのパスになるシェルスクリプトを書いています。readlink -fコマンドを使用して、ユーザーが送信したパスの絶対パスを取得しています。ユーザーが送信するパスに次のようなスペースがあるとします。
/home/stack over flow/location
私はユーザーが次のような引用符で送信することを除いています
"/home/stack over flow/location"
ここに2つの問題があります。
1)パスが引用符付きで渡されたとしても、$ @を反復処理すると、引用符が抑制され、引用符なしのパスが取得されます。
2)パラメータにスペースが含まれているかどうかを確認するための回避策を実行し、次のように明示的に追加しました
if [[ $1 = *\ * ]] ; then
temp=\"$1\"
fi
引用符を明示的に追加しましたが、現在直面している問題は、スペースを含む変数を追加したにもかかわらず、readlinkが機能しないことです。
full_path=`readlink -f ${temp}`
その言い回しの使用法:readlink [-n] [-f] symlink
次のようなシェルで通常のUNIXコマンドとして実行すると
readlink -f "/home/stack over flow/location"
これは機能していて、私はフルパスを取得しています。スペースを追加しても、シェルスクリプトでreadlinkが機能しないのはなぜですか?これを手伝ってください。