Поскольку вы не указали, как вы купили систему HP-UX, но, учитывая их непопулярный статус прямо сейчас, и вы не используете и не покупаете сервер HP-UX на этот раз, у меня сложилось впечатление, что вы получили от ebay или ему подобные. В этом случае он не сопровождался каким-либо соглашением о поддержке программного обеспечения, которое, скорее всего, вам понадобится.
Существует программный продукт ONCplus (открытые сетевые вычисления), который, скорее всего, установлен на вашем компьютере с более ранней версией. запустите команду
swlist -l bundle | grep -i onc
и запишите номер версии. если оно меньше ONCplus B.11.31.19.1
, возможно, проблема заключается в вашей проблеме, и вам может потребоваться верхнее обновление этого пакета, для чего, в свою очередь, потребуется контракт на поддержку программного обеспечения HP
С вашими командами что-то не так.
string=#@$AAA%*
иa=#$@%*
:здесь части $AAA
и $@
интерпретируются как переменные. Вы должны -заключать строки в кавычки, чтобы они интерпретировались буквально. sed
вы просите заменить буквальную строку#$@%*
в порядке ничем. Если вам нужны отдельные символы, вам нужно использовать другой формат, например. класс символов [#$@%*]
. Однако в этом случае я бы просто использовал вместо этого tr -d
, что намного проще. $(…)
предпочтительнее, чем обратные кавычки. <<<
)вместо эха, просто чтобы сэкономить несколько циклов. "
кавычки вокруг переменных. Я тоже обдумывал это, но решил, что не буду, потому что это было бы проще и не нужно для вашего конкретного вопроса. Тем не менее, я согласен, что это "правильный" способ делать вещи. Я добавил "
кавычки вокруг других переменных и конструкции $(…)
; в этом случае они не нужны, но также являются хорошей практикой. Следовательно, последние команды таковы:
string='#@$AAA%*'
a='#$@%*'
b="$(<<<"$string" tr -d "$a")"
echo "$b"
Нет необходимости запускать внешние команды при использовании «расширения параметров» последних оболочек:
echo ${string//["$a"]}
AAA