可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。
Shell特殊变量
$0
current shell file name
$n
$1 first param
$2 second param
n<10
$#
all params count,(don't contains $0)
$*
all params
$@
all params,被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?
上个命令的退出状态,或函数的返回值
$$
current shell pid
diff $* $@
1. 没有""时,效果相同
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
2.有""时,$* 是1行,$@保持不变
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
$?
可以用于查看脚本最后执行的状态
退出状态 $?
$? 也可以表示函数的返回值
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
不过,也有一些命令返回其他值,表示不同类型的错误。
下面例子中,命令成功执行:
fox@ubu:~$ ./test.shZara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
fox@ubu:~$ echo $?
0
命令替换
命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。
命令替换的语法:
`command`
DATE=`date`
echo "Date is $DATE"
变量替换
形式 | impoartant | des |
---|---|---|
${var} | 变量本来的值 | |
${var:-word} | 不改变值 | 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。 |
${var:=word} | a | 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。 |
${var:?message} | 将message送到标准错误输出 | 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。 |
${var:+word} | 不改变值(与:-返回结果相反) | 如果变量 var 被定义,那么返回 word,但不改变 var 的值。 |
#!/bin/bash
echo ${var:-"not set"} #not set
echo "1 - ${var}" #1-
echo ${var:="not set"} #not set
echo "2 - ${var}" #2- not set
unset var
echo ${var:+"default"} #nothing
echo "3 - $var" #3-
var="Prefix"
echo ${var:+"default"} #default
echo "4 - $var" #4- Prefix
echo ${var:?"message"} #Prefix
echo "5 - ${var}" #5- Prefix