Команда:Как понять этот «Баш» командная оболочка
[ -d $x ] && echo $x | grep "${1:-.*}"
Я запустить его отдельно, и [ -d $x ] && echo $x
просто выведет имя каталога. Что означает ${1:-.*}
?
Команда:Как понять этот «Баш» командная оболочка
[ -d $x ] && echo $x | grep "${1:-.*}"
Я запустить его отдельно, и [ -d $x ] && echo $x
просто выведет имя каталога. Что означает ${1:-.*}
?
В скрипте, на который вы ссылаетесь, вызывается grep
. Его первый аргумент, который будет искать , является либо первым параметром скрипта $1
, если был указан один , либо .*
, что соответствует чему угодно, если параметры не заданы.
"$1"
или "${1}"
в сценарии bash заменен первым аргументом , с которым был вызван сценарий. Иногда необходимо немного обработать эту строку , что можно сделать с расширением параметра оболочки, так как Этан Рейснер с благодарностью указал. :-
- один из таких инструментов; есть несколько других.
"${1:-.*}"
означает «если параметр-не установлен или нулевой (то есть, нет таких параметра не был задан), а затем заменить часть после того, как :
, в этом случае, .*
Пример скрипт pe
:.
#!/bin/bash
printf 'parameter count = %d\n' $#
printf 'parameter 1 is "%s"\n' "$1"
printf 'parameter 1 is "%s"\n' "${1:-(not given)}"
Выход:
$ ./pe 'foo bar'
parameter count = 1
parameter 1 is "foo bar"
parameter 1 is "foo bar"
$ ./pe
parameter count = 0
parameter 1 is ""
parameter 1 is "(not given)"
, что оболочка, которая будет Хель pful, так как bash, c shell и т. д. все запускают команды по-разному. – jgr208
bash shell on Centos – Tong
Это [Shell Parameter Expansion] (http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter- Расширение). Вы можете найти его в руководстве. –