Linux bash zmienne parametry


(michm4) #1

Witam

Napisałem skrypt, który obsługuje serwery mumble ale mam mały problem, bo jak nazwa serwera lub welcometext lub coś innego będzie zawierało spację to cały skrypt nie powiem co strzela :stuck_out_tongue: trzeba to zastąpić czymś takim ./mumble edit +welcometext jakis tekst powitalny +port 1234 +ip 1234.32.413 tylko jak to zrobić?

 

mumble

!/bin/bash

if ["$#" -eq 0]
then
echo ''
echo '#############################'
echo '# Podaj paramter:'
echo '-----------------'
echo '# start - Wlacz serwer'
echo '# stop - Wylacz serwer'
echo '-----------------'
echo '# edit - Instaluj serwer'
echo '# install - Odinstaluj serwer'
echo '# uninstall - Reinstaluj serwer'
echo '############################'
echo ''
else
if ["$1" = "edit"] && [-n "$2"] && [-n "$3"] && [-n "$4"] && [-n "$5"] && [-n "$6"] && [-n "$7"]
then
cd /home/mumble/$2/files
echo "User: $2"
echo "welcometext: $3"
echo "Port: $4"
echo "IP: $5"
echo "Players: $6"
echo "registerName: $7"
echo "database=
dbus=session
icesecretwrite=" > murmur.ini
echo -n welcometext='"' >> murmur.ini
echo -n "$3" >> murmur.ini
echo '"' >> murmur.ini
echo "port=$4
host=$5
pidfile=mumble.pid
serverpassword=
bandwidth=72000
users=$6
registerName=$7

registerPassword=secret

registerUrl=http://mumble.sourceforge.net/
registerHostname=
[Ice]
Ice.Warn.UnknownProperties=1
Ice.MessageSizeMax=65536" >> murmur.ini
fi;
if ["$1" = "start"] && [-n "$2"] && [-n "$3"]
then
cd /home/mumble/$2/files
./murmur.x86 -supw $3
./murmur.x86
echo "User: $2"
echo "supw: $3"
echo "Serwer uruchomiony"
fi;
if ["$1" = "stop"] && [-n "$2"]
then
cd /home/mumble/$2/files
I=1
for WERS in $(cat mumble.pid)
do
echo "$I\t $WERS"
I=expr $I + 1
done
echo "PID: $WERS"
kill "$WERS"
echo "serwer off"
fi;
fi;


(Barmazu) #2

Parametry w cudzysłowy i problem rozwiązany!

Skrypt:

#!/bin/bash
echo "Liczba przekazanych parametrów: ${#}"

Test:

./bash.sh "pierwszy drugi trzeci" "czwarty piąty" szósty
Liczba przekazanych parametrów: 3
./bash.sh pierwszy drugi trzeci czwarty piąty szósty
Liczba przekazanych parametrów: 6