如何理解这个"bash"shell命令
How to understand this "bash" shell command
命令是:
[ -d $x ] && echo $x | grep "${1:-.*}"
我单独有运行,[ -d $x ] && echo $x
只是输出目录名。 ${1:-.*}
是什么意思?
在您引用的脚本中,调用了 grep
。它的第一个参数是什么
它将搜索,是第一个脚本参数 </code>,如果是
给出了,或者 <code>.*
,如果没有给出参数,它匹配任何东西。
""
或 bash 脚本中的 ""
被替换为第一个参数
脚本被调用。有时需要处理
字符串一点,这可以通过 shell 参数扩展来完成,因为
Etan Reisner 很有帮助地指出。 :-
就是这样一种工具;有
其他几个。
"${1:-.*}"
表示“如果参数 1 未设置或为空(即没有这样的
给定了参数),然后替换:
后面的部分;在这种情况下,
.*
.
示例脚本 pe
:
#!/bin/bash
printf 'parameter count = %d\n' $#
printf 'parameter 1 is "%s"\n' ""
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)"
命令是:
[ -d $x ] && echo $x | grep "${1:-.*}"
我单独有运行,[ -d $x ] && echo $x
只是输出目录名。 ${1:-.*}
是什么意思?
在您引用的脚本中,调用了 grep
。它的第一个参数是什么
它将搜索,是第一个脚本参数 </code>,如果是
给出了,或者 <code>.*
,如果没有给出参数,它匹配任何东西。
""
或 bash 脚本中的 ""
被替换为第一个参数
脚本被调用。有时需要处理
字符串一点,这可以通过 shell 参数扩展来完成,因为
Etan Reisner 很有帮助地指出。 :-
就是这样一种工具;有
其他几个。
"${1:-.*}"
表示“如果参数 1 未设置或为空(即没有这样的
给定了参数),然后替换:
后面的部分;在这种情况下,
.*
.
示例脚本 pe
:
#!/bin/bash
printf 'parameter count = %d\n' $#
printf 'parameter 1 is "%s"\n' ""
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)"