Эмулятор терминала вылетает из-за функции с вложенными операторами case?

Это не следствие переход от системы на основе 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

Очевидно, вам придется подготовить это в контексте конкретного исполнения.

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

0
02.03.2017, 00:22
1 ответ

Вы рекурсивно вызываете git функцию. Используйте команду git для внутренних вызовов, чтобы функция не использовалась для них.

3
28.01.2020, 02:25

Теги

Похожие вопросы