Shell
Начало
shell - это интерпретируемый язык. shell-файл - это программа.Первая строка шелл-файла, которая говорит, что интерпретировать файл надо через shell:
строка, которая выполнится в консоли:
script -c "mvts3g-server -f $*"
поэтому желательно использовать $@
#!/bin/sh
строка, которая выполнится в консоли:
script -c "mvts3g-server -f $*"
Команды
sleep 1s 1m | ждать 1 секунду и 1 минуту |
Переменные
Специальные
#!/bin/bash
# Its a test script : test.sh
echo "First Parameter : \$1 = $1"
echo "Second parameter : \$2 = $2"
echo "Total passed parameters : \$# = $#"
echo "All parameters : \$* = $*"
echo "All parameters : \$@ = $@"
echo "Process Id : \$$ = $$"
exit 0
# Its a test script : test.sh
echo "First Parameter : \$1 = $1"
echo "Second parameter : \$2 = $2"
echo "Total passed parameters : \$# = $#"
echo "All parameters : \$* = $*"
echo "All parameters : \$@ = $@"
echo "Process Id : \$$ = $$"
exit 0
отличия $@ и $i
в кавычках $* превращается в строку, разделенную первым символом IFS, а $@ — в набор строкпоэтому желательно использовать $@
#!/bin/bash
export IFS="___"
echo "\$*: $*"
for i in "$*";
do
echo "$i" ## в цикле будет одна(!) итерация
done
echo "\$@: $@"
for i in "$@";
do
echo "$i" ## сколько параметров запуска скрипта, столько же итераций
done
export IFS="___"
echo "\$*: $*"
for i in "$*";
do
echo "$i" ## в цикле будет одна(!) итерация
done
echo "\$@: $@"
for i in "$@";
do
echo "$i" ## сколько параметров запуска скрипта, столько же итераций
done
Экспорт переменных
Пусть есть два скриптаs1
#!/bin/sh
VAR=12345
export VAR ## пробрасывает переменные в вызываемые скрипты
echo $VAR
./s2
VAR=12345
export VAR ## пробрасывает переменные в вызываемые скрипты
echo $VAR
./s2
и s2
#!/bin/sh
echo $VAR
echo $VAR
Конструкции
обратные кавычки ``
код, написанный в обратных кавычках выполнится первым, и результат выполнения вернётся в качестве аргумента.$ echo `echo 'off'`
выведет на экранoff
Комментариев нет:
Отправить комментарий