📄 incompat.sh
字号:
#!/bin/bash# Erratic behavior of the "$*" and "$@" internal Bash variables,#+ depending on whether they are quoted or not.# Inconsistent handling of word splitting and linefeeds.set -- "First one" "second" "third:one" "" "Fifth: :one"# Setting the script arguments, $1, $2, etc.echoecho 'IFS unchanged, using "$*"'c=0for i in "$*" # quoteddo echo "$((c+=1)): [$i]" # This line remains the same in every instance. # Echo args.doneecho ---echo 'IFS unchanged, using $*'c=0for i in $* # unquoteddo 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# Try this script with ksh or zsh -y.exit 0# This example script by Stephane Chazelas,# and slightly modified by the document author.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -