命令是:
[ -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 脚本中被调用脚本的第一个参数替换。有时需要稍微处理该字符串,这可以通过 shell 参数扩展来完成,正如 Etan Reisner 有用地指出的那样。:-
就是这样一种工具;还有其他几个。
"${1:-.*}"
表示“如果参数 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)"