2017-02-16 8 views
0

私はつまり、ファイル名にアンダースコアとスペースを交換したいと思い、2つの変数関数を渡すしようとしています:私はしかし、悪いsubstittion

directory=<path to file> 
file=<name of file> 

my_function "$directory/${file// /_}" 

これはbashの以降のkshで動作します古いSolaris 9のボックスで作業しているため、結果が誤った置換エラーです。

古いKSH環境でこの機能を実現する明確な方法はありますか?

+0

'$ {DIR}/$(エコー "$ファイル" | sedのさん/ _// G ')....'。がんばろう。 – shellter

+0

ありがとう!私はスペースをアンダースコアで置き換えていますが、sedの//_/g 'です。 – HerpNDerp

+0

'tr'解決策は顕微鏡的にもっと効率的かもしれません(私はそれを投票しました)。 'sed'を使うつもりなら、' printf "をお勧めします..." | sed '...' 'を 'tr'のように使用します。皆さんお元気で。 – shellter

答えて

2

あなたはtrを使用することができます。

my_function "$directory/$(printf '%s' "$file" | tr ' ' '_')"