1

ユーザーにパスの入力を求めるシェル スクリプトがあります。

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH

次のように入力すると:

Enter the path to the file: ~/Desktop/Hello\ My\ Name\ is\ Oliver/

次に、次の出力が得られます (デバッグ モードの bash)。

Enter the path to the file: ~/Desktop/Hello\ My\ Name\ is\ Oliver/
+ eval 'FILEPATH=~/Desktop/Hello My Name is Oliver/'
++ FILEPATH=/Users/Oliver/Desktop/Hello
++ My Name is Oliver/

パスに特殊文字がある場合にも同様の問題があります。

この問題を解決するにはどうすればよいですか?

編集: 適切なパスのevalようなエイリアスを修正します。~

4

1 に答える 1

2

を展開する必要がある場合は~、次のようなことを行う方が安全です。

FILEPATH=${FILEPATH/\~/$HOME}

これにより、変数もすべて一緒に保持されます。

于 2012-12-18T17:51:21.513 に答える