#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. Но возможно ли сохранить его внутри того же скрипта, а не в другом файле? Я хочу избежать наличия нескольких файлов.