在创建脚本文件时,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命令允许你在脚本结束时指定一个退出状态码