如何理解这个" bash" shell命令

时间:2015-11-12 15:29:25

标签: bash shell command parameter-expansion

命令是:

[ -d $x ] && echo $x | grep "${1:-.*}"

我已单独运行它,[ -d $x ] && echo $x只输出目录名称。 ${1:-.*}是什么意思?

1 个答案:

答案 0 :(得分:0)

在您引用的脚本中,调用了grep。它的第一个论点是什么 它将搜索,是第一个脚本参数$1,如果是的话 如果没有给出参数,则给出或.*,它匹配任何东西。

bash脚本中的

"$1""${1}"将替换为第一个参数 脚本被调用了。有时需要处理它 字符串一点,可以用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)"