Что-то напутано в "админском" scipts [закрыто]

Я скачал пакет open-source и 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
  1. sed_quote_subst: какое значение он имеет? из-за существующего '', некоторые мета в '' отключены. Но я не знаю, какие именно.
  2. #!/bin/bash & zsh emulate: Первая строка декларирует, что этот скрипт выполняется в bash. Так почему же есть emulate, который от zsh?
  3. alias -g '${1+"$@"}'='"$@"': Я только что ввел это в другой bash и получил ошибку: -g :invalid option, Я запутался в разнице между zsh и bash, и как они работают вместе. Не могли бы вы объяснить мне это, пожалуйста?

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

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

2 ответа

  1. #!/bin/bash & zsh подражают: первая линия объявляет, что этот сценарий бежит в ударе. Так, почему есть подражание, которое является от zsh?

первая линия, хижина, только указывает, что, если бы сценарий выполнен непосредственно, им управляли бы, используя удар. Ничто не препятствует тому, чтобы Вы управляли им, используя zsh:

zsh admin.sh

я не знаю, почему автор думал, чтобы проверить на zsh, но они сделали. Этот раздел кодекса для zsh и не будет бежать в ударе:

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
  1. alias -g '${1+"$@"}'='"$@"': Я просто ввел это на другом ударе и получаю ошибку: -g :invalid option, я смущен различием zsh & удар, и как они сотрудничают. Вы могли объяснить это мне, пожалуйста?

Это - очень широкий вопрос. Я не объясню, что все различия zsh и удара - идут, читает документацию обоих для этого. Для отдельного момента alias -g, zsh имеет глобальный псевдонимы. В ударе псевдонимами только заменяют в начале линии. В zsh, alias -g определяет глобальные псевдонимы, которыми заменяют везде в линии.

Так, в zsh, если я делаю:

alias -g foo=bar

И затем бегите:

echo foo

продукция будет:

bar
1
ответ дан 30 September 2019 в 07:45

Ваши вопросы испытывают недостаток в информации, но я попытаюсь ответить на это как это:

  1. sed regexp демистифицируют

    s/\([`"$\\]\)/\\\1/g'
    ^     ^         ^----------------- with The character with a leading \
          | 
    |     | --- the characters `"$\
    |
    |-- replace
    

    , Таким образом " становится \"

  2. , я понятия не имею, zsh не моя чашка чая, когда Вы управляете сценариями.

  3. Тест, если заявления как это:

    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
ответ дан 30 September 2019 в 07:45

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

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