Раскройте переменную, значение которой содержит параметр и путь с пробелами

Можно использовать https://www.dnsleaktest.com/ . Он показывает ваш ip-адрес и положение этого.

-121--289216-

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

sysctl kernel.panic=1
sysctl kernel.sysrq=1
echo c > /proc/sysrq-trigger

См. https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst для получения более подробной информации о параметре kernel.sysrq и команде 'c'

Параметр kernel.panic = 1 должен быть настроен на перезагрузку хоста через 1 секунду, когда Если необходимо исследовать выходные данные консоли, можно установить для параметра значение 0 , чтобы предотвратить автоматическую перезагрузку.

-121--185022-

  1. Управляющие значения обычно представляют собой только регистровые значения аппаратных средств.

    Сопоставление управляющих значений и значений dB выполняется с помощью метаданных TLV.

  2. «PCM» применяется к звуку, воспроизводимому через устройство PCM, в то время как «Master» применяется ко всем воспроизводимым звукам.

0
16.05.2018, 02:05
2 ответа

La razón por la que su comando no funciona es porque la eliminación de comillas/división de palabras no se aplica de forma recursiva.

Entonces "$old_dest"se expande al argumento ÚNICO que sigue a:

--link-dest "/media/t/my external hdd/backup/old one"

Todo eso es UN argumento, porque la variable estaba entre comillas dobles.(Y esas comillas dobles se eliminan, pero las comillas dobles que resultaron de la expansión , es decir, eran parte del valor de la variable, no se eliminan.)

Si usara $old_desten su lugar, obtendría múltiples argumentos, pero no de la forma que desea. Obtendría los siguientes CINCO argumentos:

--link-dest
"/media/t/my
external
hdd/backup/old
one"

Esto se debe a que obtendría una expansión variable seguida de una división de palabras, como se explica en el manual. No obtendría una expansión variable seguida de la interpretación de las comillas en la variable. Y las comillas no se eliminarían, por lo que el argumento final serían los cuatro caracteres:one".

La forma correcta de hacerlo, como se explica en otra respuesta, es usar arreglos Bash.


En una nota aparte, puede disfrutar de cómo Tcl maneja las comillas y la división de palabras. Probablemente sea más intuitivo, aunque tengo tanta práctica con la división de palabras de Shell que tengo que pensar más en Tcl que en Shell.

2
28.01.2020, 02:18

Dado que está utilizando bash, y dado que bash admite matrices, sugeriría que el antiguo _dest sea una matriz, en su lugar:

#! /bin/bash

old_dest=()
while getopts ":l:t" opt; do
    case $opt in
        l)
            old_dest+=('--link-dest' "$OPTARG")
            ;;
    esac
done

printf 'Element: %s\n' rsync -a --delete "${old_dest[@]}" /path/to/source  /path/to/dest

Instrumenté la llamada a rsync para que en su lugar sea una llamada a printf para mostrar el comando y cada argumento en una línea separada. Cuando se ejecuta:

./myscript.sh -l "/media/t/my external hdd/backup/old one"

El resultado es:

Element: rsync
Element: -a
Element: --delete
Element: --link-dest
Element: /media/t/my external hdd/backup/old one
Element: /path/to/source
Element: /path/to/dest
2
28.01.2020, 02:18

Теги

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