Это не следствие переход от системы на основе Linux к какой-либо системе, отличной от Linux (возможно, AIX?). Это фундаментальное непонимание того, как оболочка анализирует и выполняет команды.
Вы не можете написать это и ожидать, что оно запишет отметку времени в файл:
v="date > /tmp/date.txt"
$v
Точно так же вы не можете написать это и заставить его выполнять замены и записывать результаты в выходной файл
v="s/abc/XYZ/ /tmp/source > /tmp/destination"
sed $v
Перенаправление файла не может быть указано в пределах переменная.
Я думаю, что вы ищете sed -f
, где вы можете создать файл замен и применить их к исходному файлу данных:
#!/bin/ksh
# Usage: thisprogram <transform_file> <src_file> <dst_file>
#
transform="$1"
src="$1"
dst="$2"
sed -f "$transform" "$src" >"$dst"
Файл преобразования может содержать такие операции :
s/@Number@/1234/g
s/@Value@/somevalue/g
s/@Socket@/99b44/g
Очевидно, вам придется подготовить это в контексте конкретного исполнения.
При более подробном описании вашего вопроса это решение можно было бы развить, но я надеюсь, что у вас достаточно информации, чтобы переработать его для вашего конкретного случая использования.
Вы рекурсивно вызываете git
функцию. Используйте команду git
для внутренних вызовов, чтобы функция не использовалась для них.