У меня есть проблема, и я пробовал несколько способов исправить это, но я не могу показаться.Сценарий Ubuntu Bash, выполняющий команду с пробелами
Итак, у меня есть два сценария оболочки.
background.sh: Выполняет заданную команду в фоновом режиме и выводит перенаправление.
#!/bin/bash
if test -t 1; then
exec 1>/dev/null
fi
if test -t 2; then
exec 2>/dev/null
fi
"[email protected]" &
main.sh: Этот файл просто запускает эмулятор (genymotion) в качестве фонового процесса.
#!/bin/bash
GENY_DIR="/home/user/Documents/MyScript/watchdog/genymotion"
BK="$GENY_DIR/background.sh"
DEVICE="164e959b-0e15-443f-b1fd-26d101edb4a5"
CMD="$BK player --vm-name $DEVICE"
$CMD
Это прекрасно работает, когда у меня нет пробелов в моем каталоге. Однако, когда я пытаюсь сделать это: GENY_DIR="home/user/Documents/My Script/watchdog/genymotion"
, которого у меня нет на данный момент. Я получаю сообщение о том, что файл или каталог не найдены. Я попытался поместить "$CMD"
в цитату, но это не сработало.
Вы можете проверить это, пытаясь запустить что-либо в качестве фонового процесса, не обязательно быть эмулятором.
Любые консультации или отзывы будут оценены. Я тоже пытался это сделать.
BK="'$BK'"
или
BK="\"$BK\""
или
BK=$(echo "$BK" | sed 's/ /\\ /g')
Ваш каталог, который может иметь пустые места, присваивается вашей переменной 'GENY_DIR', поэтому я думаю, что при цитировании' CMD' он не имеет никакого эффекта. Вы пытались процитировать свой '$ {GENY_DIR}' и посмотреть, как он себя ведет? – ODelibalta
Спасибо, ребята, храня его в массиве, как это предложил @that, другой парень работал как шарм :) – codeCompiler77