2
#====================script 5 -- ls reccurssive avec cd =======
#!/bin/bash
exec 2>/dev/null # redirige stderr pour toute la suite
# au cas ou le script est invoque sans argument $1
# n'existe pas, la commande suivante devient cd .
cd ${1:-.} # problem that i miss understood
for i in * ; do
if [ -d $i ] ; then
echo "$PWD/$i/ <-- repertoire"
$0 $i # le script s'invoque lui-même
else
echo $PWD/$i
fi
done

==================================================== =

有人可以向我解释这个 cd ${1:-.} 是什么意思如果有任何文章解释这个

4

1 回答 1

2

${a:-b}如手册中所述,表示$a如果已定义则使用,否则仅b.

这里的想法是,如果脚本接收到一个参数,$1将被定义,并且脚本将cd指向该目录。如果脚本没有收到参数,${1-.}将扩展为提供的默认值, .

由于.表示当前目录并且cd .是无操作的,这基本上意味着“如果可用,否则只需继续执行脚本。cd$1

于 2017-02-12T10:48:07.483 回答