Проблема с передающими параметрами, содержащими пробелы и подстановочные символы

Я нашел решение здесь. Играемый звук /usr/share/sounds/freedesktop/stereo/camera-shutter.oga. Так просто переименование, что файл мешает ему играться:

sudo mv /usr/share/sounds/freedesktop/stereo/camera-shutter.oga \
    /usr/share/sounds/freedesktop/stereo/damn-camera-shutter.oga

Вот именно, в следующий раз, когда Вы делаете снимок экрана, он будет сделан в тишине.

3
18.12.2014, 00:36
1 ответ

Используйте массив, поскольку это может расширить на переменное количество аргументов:

#!/bin/bash
# This is file caller.bash
switch=()
if [[ ${1-x} == x ]]
then
  switch=("--abc=long argument")
fi
some_command.sh "--exclude=*~" "${switch[@]}" arg

или можно использовать $ {var + ...} Syntax:

#!/bin/sh
# This is file caller.sh
unset switch
if [ "${1-x}" = x ]
then
  switch="--abc=long argument"
fi
some_command.sh "--exclude=*~" ${switch+"$switch"} arg

Обратите внимание, что с zsh, вы можете сделать:

#!/bin/zsh
switch=
if [ "${1-x}" = x ]
then
  switch="--abc=long argument"
fi
some_command.sh "--exclude=*~" $switch arg

ZSH не делает Split + Glob После расширения параметров, но он делает Пустое удаление , который вы хотите здесь Отказ

3
27.01.2020, 21:23

Теги

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