#bash #file #shell
#bash #файл #оболочка
Вопрос:
У меня есть файл под названием a.txt . со значениями типа
1
2
3
...
Я хочу перезаписать этот файл, но
echo "$var" >> a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt
...
просто добавляется. Использование > также бесполезно. Как я могу перезаписать с помощью >> operator в сценарии оболочки?
Комментарии:
1. Можете ли вы более конкретно объяснить, почему «использование> бесполезно»? Разве он не перезаписывается точно так, как вы запрашиваете?
2. эхо «$var» > a.txt echo «$var1» > a.txt echo «$var2» > a.txt когда я использую это, в файле содержится только $ var.
3. эхо «$var» > a.txt должен выполнить задание, попробуйте это
4. итак, возможно, вы хотите
echo "$var" > a.txt echo "$var1" >> a.txt echo "$var2" >> a.txt
(то есть, стереть файл только в первый раз, затем добавить остальные)
Ответ №1:
Возможно, вы захотите использовать >
для первого перенаправления и >>
для последующих перенаправлений:
echo "$var" > a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt
Ответ №2:
>
усекает файл, если он существует, и выполняет то, что вы изначально просили.
>>
добавляется к файлу, если он существует.
Если вы хотите перезаписать содержимое файла (не усекать его), используйте 1<>
например:
[23:58:27 0 ~/tmp] $ echo foobar >a
[23:58:28 0 ~/tmp] $ cat a
foobar
[23:58:50 0 ~/tmp] $ echo -n bar 1<>a
[23:58:53 0 ~/tmp] $ cat a
barbar
Ответ №3:
Каким образом использование > бесполезно? Это явно делает то, что вы хотите, перезаписывая файл, поэтому используйте > для первого, а затем >> для добавления будущих значений.
Ответ №4:
echo "$var
$var1
$var2" > a.txt
или
echo -e "$varn$var1n$var2" > a.txt