Скрипт в качестве значения переменной

#bash #if-statement #variables #awk #script

Вопрос:

Не могли бы вы объяснить, пожалуйста, можно ли сохранить скрипт в качестве переменной? Это сценарий:

 ### SCRIPT1 ###  if [ "$4" = "test-1" ] ; then  existing_user1=$(ldapsearch -x -b "cn=users,cn=servers,ou=servers,dc=com" -H ldap://127.0.0.1 -D "cn=admin,dc=servers,dc=com" -w "pass" cn uid | grep "uid: $3" | grep -oE '[^ ] 

Я пытался вот так

my_new_variable=( сюда я вставил скрипт сверху )

Но, похоже, это работает неправильно... Я изменил скобки с кавычками, но это тоже не сработало.

До сих пор у меня были некоторые простые вещи в качестве значения переменной, но ничего сложного, как еще один сценарий bash.

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

Заранее спасибо


Ответ №1:

Вы можете использовать здесь-документ:

 script=$(cat lt;lt;"EOF" ### SCRIPT 1 ###  # commands  # last line EOF )  

Все, что находится между строками "EOF" и EOF передается буквально, как cat стандартный ввод. Это вложено в подстановку команды, чтобы поместить ее в переменную. Последняя EOF строка должна быть в своей собственной строке, поэтому закрытие ) должно быть в следующей строке. Обратите внимание, что все завершающие новые строки будут удалены, потому что это замена команды.

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

Этот синтаксис переносим sh , а не специфичен для bash.

Ответ №2:

Сначала вы должны сохранить его в виде файла, а затем сохранить в какой-либо переменной. например, var=$(cat script.sh)

Комментарии:

1. Но возможно ли сохранить его внутри того же скрипта, а не в другом файле? Я хочу избежать наличия нескольких файлов.

) if [ "$existing_user1" = "$3" ] ; then exit -1 elif [ "$existing_user1" = "" ] ; then gid=523 ; cn="cn=users,cn=servers" fi elif [ "$4" = "servers2" ] ; then existing_user2=$(ldapsearch -x -b "cn=users,cn=servers,ou=servers,dc=servers,dc=com" -H ldap://127.0.0.1 -D "cn=admin,dc=servers,dc=com" -w "pass" cn uid | grep "uid: $3" | grep -oE '[^ ]Я пытался вот так

my_new_variable=( сюда я вставил скрипт сверху )

Но, похоже, это работает неправильно... Я изменил скобки с кавычками, но это тоже не сработало.

До сих пор у меня были некоторые простые вещи в качестве значения переменной, но ничего сложного, как еще один сценарий bash.

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

Заранее спасибо

Ответ №1:

Вы можете использовать здесь-документ:


Все, что находится между строками "EOF" и EOF передается буквально, как cat стандартный ввод. Это вложено в подстановку команды, чтобы поместить ее в переменную. Последняя EOF строка должна быть в своей собственной строке, поэтому закрытие ) должно быть в следующей строке. Обратите внимание, что все завершающие новые строки будут удалены, потому что это замена команды.

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

Этот синтаксис переносим sh , а не специфичен для bash.

Ответ №2:

Сначала вы должны сохранить его в виде файла, а затем сохранить в какой-либо переменной. например, var=$(cat script.sh)

Комментарии:

1. Но возможно ли сохранить его внутри того же скрипта, а не в другом файле? Я хочу избежать наличия нескольких файлов.

) if [ "$existing_user2" = "$3" ] ; then (echo "dn: cn=servers,ou=servers,dc=servers,dc=com" echo "add: memberUid" echo "memberUid: $3") | ldapmodify -D "cn=admin,dc=servers,dc=com" -w "pass" exit -1 elif [ "$existing_user2" = "" ] ; then gid=523 ; cn="cn=users,cn=servers" (echo "dn: cn=servers,ou=servers,dc=servers,dc=com" echo "add: memberUid" echo "memberUid: $3") | ldapmodify -D "cn=admin,dc=servers,dc=com" -w "pass" fi fi )

Я пытался вот так

my_new_variable=( сюда я вставил скрипт сверху )

Но, похоже, это работает неправильно… Я изменил скобки с кавычками, но это тоже не сработало.

До сих пор у меня были некоторые простые вещи в качестве значения переменной, но ничего сложного, как еще один сценарий bash.

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

Заранее спасибо

Ответ №1:

Вы можете использовать здесь-документ:


Все, что находится между строками "EOF" и EOF передается буквально, как cat стандартный ввод. Это вложено в подстановку команды, чтобы поместить ее в переменную. Последняя EOF строка должна быть в своей собственной строке, поэтому закрытие ) должно быть в следующей строке. Обратите внимание, что все завершающие новые строки будут удалены, потому что это замена команды.

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

Этот синтаксис переносим sh , а не специфичен для bash.

Ответ №2:

Сначала вы должны сохранить его в виде файла, а затем сохранить в какой-либо переменной. например, var=$(cat script.sh)

Комментарии:

1. Но возможно ли сохранить его внутри того же скрипта, а не в другом файле? Я хочу избежать наличия нескольких файлов.