2

名前にスペースが含まれ、毎週変わるファイルを受け取ります (名前には週番号が含まれます)

IE、今週のファイルは次のようになりますThis is the file - w37.csv

このファイルを考慮するスクリプトを作成する必要があります。私はこのスクリプトを書くことに成功しませんでした。

私が行った場合 :

    $FILE="This is the file - w*.csv"

見つからない/dir/${FILE}

私は試した"This\ is\ the\ file - w*.csv"

私は試し/dir/"${FILE}"てみました"/dir/${FILE}"

しかし、私はまだ自分のファイルを見つけることができません

名前のスペースには変数を二重引用符で囲む必要があるように見えますが、ワイルドカードは分析されません。

アイデア(または答え)はありますか?

よろしく、

オリビエ

4

3 に答える 3

3
echo /dir/"This is the file - w"*.csv

または — あなたはほとんどそれを試しました —</p>

echo /dir/This\ is\ the\ file\ -\ w*.csv
于 2012-09-17T09:38:23.807 に答える
2

bash 配列を使用する

v=( /dir/This\ is\ the\ file - w*.csv )

一致するファイルが 1 つだけであることが保証されている場合は、単に展開できます$v。それ以外の場合は、次のように展開して、一致するファイルの完全なリストを取得できます。

"${v[@]}"

または個々の一致を使用して

"${v[0]", "${v[1]}", etc
于 2012-09-17T12:30:37.683 に答える
1

まず、割り当てでドル記号を使用しないでください。

さらに、割り当てではワイルドカード展開は呼び出されません。ただし、たとえば、プロセス置換を使用できます。

FILE=$(echo 'This is the file - w'*.csv)

ワイルドカード自体は引用符に含まれていないことに注意してください。引用符はワイルドカードの拡張を防ぎます。

于 2012-09-17T09:43:17.120 に答える