Что-то запуталось в & ldquo; admin & ldquo; скрипты [закрыты]

Я загрузил пакет с открытым исходным кодом и make. Но ошибка возникает, когда я запускаю скрипт admin, который пытается начать. Я нашел, что это была некоторая проблема с path. Но есть еще проблема, которая меня смутила:

#! /bin/bash

# ionadmin - temporary wrapper script for .libs/ionadmin
# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
#
# The ionadmin program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.

# Sed substitution that helps us do robust quoting.  It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'

# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
sed_quote_subst: какое значение у нее есть? из-за существующих '' некоторые мета в '' отключены. Но я не знаю, кто они. #!/bin/bash & amp; zsh emulate: первая строка объявляет, что этот скрипт запущен в bash. Итак, почему есть эмулирующий, который от zsh? alias -g '${1+"$@"}'='"$@"': Я просто ввел это в другой bash и получил ошибку: -g :invalid option, я смущен о различии zsh & amp; bash, и как они работают вместе. Не могли бы вы объяснить это мне, пожалуйста?

Я новая рука для этого, поэтому этот вопрос может быть не таким «полезным» для вас. Но ваш ответ может помочь мне лучше понять этот мир.

1
задан 18 October 2015 в 11:11

1 ответ

В ваших вопросах не хватает информации, но я постараюсь ответить на это следующим образом:

sed regexp demystify
s/\([`"$\\]\)/\\\1/g'
^     ^         ^----------------- with The character with a leading \
      | 
|     | --- the characters `"$\
|
|-- replace
Так что " становится \" Я понятия не имею, zsh не мой чашку чая, когда вы используете скрипты. Проверьте, есть ли такие утверждения:
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 
     echo "Does the if statement run in my shell?"; 
else 
     echo "The else statement runs in my shell"; 
fi 
0
ответ дан 23 May 2018 в 16:35
  • 1
    THX для регулярного выражения demystify. – Frank Wang 18 October 2015 в 11:41
  • 2
    обратите внимание, что это регулярное выражение заменит \ " - & gt; \\\ & Quot; – Erik Johansson 18 October 2015 в 11:47

Другие вопросы по тегам:

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