在创建脚本文件时,umask的值决定了新文件的默认权限设置 赋予文件属主执行文件的权限:

chmod u+x test1

果想把文本字符串和命令输出显示在同一行中:

echo -n "The time and date are: "

通过${variable}形式引用的变量。变量名两侧额外的花括号通常用来帮 助识别美元符后的变量名

echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME

当然也可以设置自己的变量

var3=testing 12
var1=10
var2=-57
var4="still more testing"

shell脚本会自动决定变量值的数据类型。在脚本的整个生命周期里,shell脚本中定义的变量 会一直保持着它们的值,但在shell脚本结束时会被删除掉。


命令替换:

esting=$(date)
echo "The date and time are: " $testing

子shell(subshell)是由运行该脚本的shell 所创建出来的一个独立的子shell(child shell)。正因如此,由该子shell所执行命令是无法 使用脚本中所创建的变量的。


输入重定向和输出重定向正好相反。输入重定向将文件的内容重定向到命令,而非将命令的 输出重定向到文件。

内联输入重定向(inline input redirection)。这种方法 无需使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以了

wc << EOF
> test string 1
> test string 2
> test string 3
> EOF

们用不着将命令输出重定向 到文件中,可以将其直接重定向到另一个命令。这个过程叫作管道连接(piping)。

rpm -qa | sort > rpm.list

bash shell为了保持跟Bourne shell的兼容而包含了expr命令,但它同样也提供了一种更简单 的方法来执行数学表达式。在bash中,在将一个数学运算结果赋给某个变量时,可以用美元符和 方括号($[ operation ])将数学表达式围起来。

$ cat test7
    #!/bin/bash
    var1=100
    var2=50
    var3=45
    var4=$[$var1 * ($var2 - $var3)]
    echo The final result is $var4
    $

Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。对于需要进行检查的 命令,必须在其运行完毕后立刻查看或使用$?变量。它的值会变成由shell所执行的最后一条命令 的退出状态码。

exit命令允许你在脚本结束时指定一个退出状态码