この文字列をゼロ以外の項目の出力として取得しようとしています。
[21-40]
[41-60]
[61-80]
[81-100]
しかし、次のスクリプトは何らかの方法で_FILENAME
変数の内容を評価しようとします。
#!/bin/bash
for i in 0 21 41 61 81
do
if (( $i > 0 ))
then
_FILENAME="[$i-$((i+19))]"
else
_FILENAME="First File"
fi
echo $_FILENAME
done
ここにいくつかの構文がないと確信しています。
ベストアンサー1
変数参照の周りに二重引用符を使用します(たとえば$_FILENAME
、二重引用符がない場合、シェルは変数の内容を複数の「単語」に分割し、見つかったファイルグローブ(ワイルドカード式)を拡張しようとします。[21-40]
はいglobs(これは、「2」、「1」から「4」、または「0」という名前のすべてのファイルと一致します)。現在のディレクトリに名前が一致するファイルがある場合、角かっこ式ではなくファイルのリストが印刷されます。したがって、やるべきことは、次のものを使用するだけです。
echo "$_FILENAME"
引用されていないバージョンではなく。しかし、シェルや他のプログラムに特別な意味を持つ多くの魔法変数との競合を避けるために、シェル変数名に小文字(または大文字と小文字の混合)を使用するのが最善です。