Запись имени файла в себя Linux / fedora.


У меня сейчас небольшая дилемма, и я пишу небольшой сценарий оболочки, который создает 10 файлов, а затем в каждом файле записывается его имя.

Вот что у меня есть до сих пор:

for f in {0..9}.txt
do
    echo Hello, this is the first line of '#$f' > "File${f}"

done

Таким образом, выходные данные для каждого файла должны быть:

Hello, this is the first line of file0 

Hello, this is the first line of file1

И т. д.

1 2

1 ответ:

При использовании одинарных кавычек оболочка не будет расширять то, что находится внутри них. Таким образом, '#$f' рассматривается как буквально строка #$f вместо того, чтобы быть расширенным до значения $f. Попробуйте вместо этого:

for f in {0..9}.txt; do
    echo "Hello, this is the first line of file #$f" > "File${f}"
done

Пример:

$ cat File3.txt
Hello, this is the first line of file #3.txt