incompat.sh

来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· Shell 代码 · 共 138 行

SH
138
字号
#!/bin/bash#  内部Bash变量"$*"和"$@"的古怪行为,#+ 都依赖于它们是否被双引号引用起来.#  单词拆分与换行的不一致的处理.set -- "First one" "second" "third:one" "" "Fifth: :one"# 设置这个脚本的参数, $1, $2, 等等.echoecho 'IFS unchanged, using "$*"'c=0for i in "$*"               # 引用起来do echo "$((c+=1)): [$i]"   # 这行在下边每个例子中都一样.                            # 打印参数.doneecho ---echo 'IFS unchanged, using $*'c=0for i in $*                 # 未引用do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS unchanged, using "$@"'c=0for i in "$@"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS unchanged, using $@'c=0for i in $@do echo "$((c+=1)): [$i]"doneecho ---IFS=:echo 'IFS=":", using "$*"'c=0for i in "$*"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using $*'c=0for i in $*do echo "$((c+=1)): [$i]"doneecho ---var=$*echo 'IFS=":", using "$var" (var=$*)'c=0for i in "$var"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using $var (var=$*)'c=0for i in $vardo echo "$((c+=1)): [$i]"doneecho ---var="$*"echo 'IFS=":", using $var (var="$*")'c=0for i in $vardo echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using "$var" (var="$*")'c=0for i in "$var"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using "$@"'c=0for i in "$@"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using $@'c=0for i in $@do echo "$((c+=1)): [$i]"doneecho ---var=$@echo 'IFS=":", using $var (var=$@)'c=0for i in $vardo echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using "$var" (var=$@)'c=0for i in "$var"do echo "$((c+=1)): [$i]"doneecho ---var="$@"echo 'IFS=":", using "$var" (var="$@")'c=0for i in "$var"do echo "$((c+=1)): [$i]"doneecho ---echo 'IFS=":", using $var (var="$@")'c=0for i in $vardo echo "$((c+=1)): [$i]"doneecho# 使用ksh或者zsh -y来试试这个脚本.exit 0# 这个例子脚本是由Stephane Chazelas所编写,# 并且本书作者做了轻微改动.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?