[
]Из книги рецептов Upstart, []Изменение оболочки по умолчанию[]. Есть 3 варианта, первые 2 включают изменение оболочки по умолчанию с []/bin/sh[
] на что-то другое. Но 3-я опция выглядит так, как будто она решит вашу конкретную проблему.[
] [
][]excerpt[][
] [
] []Use a "here document" (предполагая, что выбранная вами оболочка поддерживает их) в файлах конфигурации задания, которые вы хотите запустить с другими shell:[
] [][] []скрипт /бин/бэш эхо "Привет - я бегу под оболочкой башни" дата эхо "и я тоже :)" EOT конечный скрипт [
][
]
Если вы просто хотите сделать это в скорлупе, используйте команду find
для списка файлов и затем команду basename
для получения имени файла и используйте sed
для замены строки
for i in $(find . -type f); do fname=$(basename $i); sed -i "s/TestRelation/${fname}/" $fname; done
Well. basename
and find
is no required and you can just use ls
if you are sure of only files in a particular dir you're search
find
and you can just use ls
if you are sure of only files in a particular dir you search. Сценарий оболочки с «здесь документом« здесь »будет справиться с этим:
#!/bin/bash
for NAME in t?
do
ex -s $NAME << END_EDITS
1s/TestRelation/$NAME/
w!
q
END_EDITS
done
Не зная, что названы ваши файлы, я выбрал« T1 »,« T2 »,« T3 »и т. Д. В качестве имени файлов. Вам придется генерировать имена файлов в целом.
LOOP «для» дает имя оболочки имя
значение имени файла каждый раз через петлю. Экземпляр Bash
, выполняющий вышеуказанный скрипт, вызывает редактор Ex
на каждом имени файла и дает ему некоторые входные строки. Команда 1s / testrealation / $ name /
EX - Ex расширяется экземпляром Bash
, что заменит имя файла для детали «$ name».
Вы должны иметь токен, который заканчивается «здесь документ» ( End_edits
в этом случае) в начале строки, нет белого пространства спереди.
Вы можете попробовать что-то вроде этого.
Для I в `ls * .sh` Do Echo "$ I" >> $ I.new; cat $ i.new $ i >> $ I.new; Готово
Что это делает в основном перечислять файлы и хранить имена файлов. Напишите те имена в новом файле и кошайте его с исходным файлом. Вы также можете переместить файл .new в исходное имя файла, если это необходимо. Это не самый элегантный вариант, но он работает.