Удаленная команда ssh, не отправляющая переменную эха от ksh сценария на AIX

В bash используйте что-то вроде этих строк:

mkdir -p {mydir,hisdir,herdir}/doc
touch {mydir,hisdir,herdir}/doc/doc1.txt

Синтаксис {...} называется «раскрытием фигурных скобок», и в отличие от расширения имени пути , где имя файла должно существуют, сгенерированные результаты не обязательно должны совпадать с чем-либо, что уже существует. И -p означает создание всех вложенных компонентов пути по мере необходимости - в противном случае вы получите сообщение об ошибке, поскольку mkdir попытается создать окончательные каталоги «doc» перед родителями.

(Ознакомьтесь с примерами на странице руководства bash; создание подобных подкаталогов является обычным вариантом использования.)

Если mydir, hisdor и herdir уже существуют, и вы не хотите их вводить повторно, то можно использовать Stéphane Chazelas's решение, вероятно, является самым умным, но если вы не делаете это все время, умный не всегда лучший - я никогда не могу вспомнить, что такое расширение массива bash, и держу пари, что многие младшие системные администраторы не узнают его. В этом случае, я думаю, я бы порекомендовал либо цикл, либо find , например:

find . -maxdepth 1 -mindepth 1 -type d \
   -execdir mkdir {}/doc \; -execdir touch {}/doc/doc1.txt \;

, но, на самом деле, простой цикл имеет то преимущество, что он прост - и не более того!

1
23.12.2014, 01:41
1 ответ

Внутри задней части обратной косички цитаты следующего символа. Таким образом, вы получаете вывод из команды

ssh -q ${SIDHost} ". /usr/vmmc/bin/oracle_scripts/useq $ThisSID; echo $HOST_IS_ERPDB"

, которые вам нужны \\ вместо этого:

ERPTest=`ssh -q ${SIDHost} ". /usr/vmmc/bin/oracle_scripts/useq $ThisSID; echo \\$HOST_IS_ERPDB"`

так, чтобы erptest устанавливается на вывод команды

ssh -q ${SIDHost} ". /usr/vmmc/bin/oracle_scripts/useq $ThisSID; echo \$HOST_IS_ERPDB"

Используйте $ (...) вместо устарелого `...` `. Обратите внимание, что на некоторых версиях AIX вам может потребоваться использовать / bin / sh или ksh93 вместо античного / bin / ksh .

ERPTest=$(ssh -q ${SIDHost} ". /usr/vmmc/bin/oracle_scripts/useq $ThisSID; echo \$HOST_IS_ERPDB")
1
27.01.2020, 23:51

Теги

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