#! /bin/zsh
if [[ -z $1 || $1 == "--help" ]]
then
echo "usage: $0 Machine [machine ...]
fi
foreach machine
rsync -e ssh --times --perms --recursive --delete $HOME $machine:
end
命令行上的每个空格分隔的字符串变成了位置参数,包括所调用的脚本的名称。因此,命令 synch.zsh 只有一个位置参数 $0。synch.zsh --help 命令有两个位置参数:$0 和 $1,其中 $1 是字符串 --help。
所以,清单 3 表示“如果第一个位置参数为空(-z 操作符测试空字符串)或(由 || 表示)如果第一个参数等于‘—help’,则打印用法信息。(如果您刚开始编写脚本,可以考虑在每个脚本中提供用法信息作为提示。它提醒其他人——甚至您自己,如果您忘了的话——如何使用该脚本。)
短语 [[ -z $1 || $1 == "--help" ]] 是 if 语句的 条件,但您也可以将同样的条件子句用作命令,并将其与其他命令组合使用以控制通过脚本的流。请查看清单 4。它枚举您的 $PATH 中的所有可执行命令,并将条件与其他命令组合使用以执行适当的工作。
清单 4. 列出 $PATH 中的命令
#! /bin/zsh
DirectorIEs=(`echo $PATH | column -s ':' -t`)
for directory in $directories
do
[[ -d $directory ]] || continue
pushd "$directory"
for file in *
do
[[ -x $file && ! -d $file ]] || continue
echo $file
done
popd
done | sort | uniq
标签: