背後には、のは私が行うことができますは、どのように私は、文字と前のスペースを取り除くための方法を取り除くパラメータを使用し、それ
r="part1 - part2"
文字列があるとしましょうか
PART1=${r%%-*}
PART2=${r##*-}
各部分を取得します。 PART1も前面の空白を取得し、PART2は背面の空白を取得します。
しかし、これらの2つの可変部分をパスの一部として使用しようとしているため、スペースがあるため問題になります。
まったく同じ方法を使って空白文字をエスケープする方法があるので、その後ろ/後ろの空白も削除されますか?あなたはこれを行うことができ、文字列でのみ言葉を取得したい場合は
IFS=- read first second <<< "$r"
$ printf '%q\n' "$first"
part1\ # Note the space here
$ printf '%q\n' "$second"
\ part2
:
文字列の最後または最初に一致する必要があるため、あなたが書いたものは機能しません。 '$ {r %% - *}'と '$ {r ## * - }'を試してください。 – 123
何らかの理由で*記号があると、スタックオーバーフローが記号を隠してしまいます。 –
[編集ヘルプ](http://stackoverflow.com/editing-help)をご覧ください。 – Cyrus