1

bash シェルでは、次のようにフォルダー内のすべてのファイルを読み取っています。

 #!/bin/bash
 FILES=MyFolder/*
 for f in $FILES
 do
    echo "Started $f file..."
    ./$f > $f_july_15.txt
    echo "Finished $f file..."
 done

6 行目では、各ファイルの出力を、次のように入力ファイルの名前を含む txt ファイルに保存しようとしています$f_july_15.txt。txt ファイルがまったく作成されないことに気付きましたが、echo呼び出しとコマンド./$fは正しく実行されます。名前の中を少し動かして遊ん$fだのですが、出力ファイルに入力ファイルの名前が入りません。なぜこれが起こっているのか、どうすれば解決できるのか教えてください。

4

1 に答える 1

4

The underscore is a valid character in variable names.

Do:

./"$f" > "${f}_july_15.txt"

Your code was trying to use a variable named f_july_15. You need to use braces to delimit the variable name when it's followed by a character that can be part of a variable name.

于 2013-07-16T19:19:02.720 に答える