source

source2

可以使用 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

results matching ""

    No results matching ""