📄 incompat.sh
字号:
#!/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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -