! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
grep
Linux shell grep 命令用于查找文件里符合条件的字符串。
# code.txt文件内容username=xiaoage=18# test.sh文件内容userinfo=`cat ./code.txt | grep username`echo $userinfouser=${userinfo##*=}echo $user# 执行脚本sh test.shusername=xiaoxiao

在脚本里调用另一个脚本
1、source
2、.点号
3、sh命令
三者的区别
使用source命令和点号.是等价了,类似于C/C++中的#include预处理指令,都是将指定的脚本内容拷贝至当前的脚本中,由一个Shell进程来执行。使用sh命令来调用另外的脚本和前面两种方法有着本质的区别。使用sh命令则会开启新的Shell进程来执行指定的脚本,这样的话,父进程中的变量在子进程中就无法访问。
. "$(dirnam "$1")/01.sh"# 相当于是 source ../01.sh
参数传递
$0 为执行的文件名(包含文件路径)
# test.sh 文件#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";
$ chmod +x test.sh$ ./test.sh 1 2 3Shell 传递参数实例!执行的文件名:./test.sh第一个参数为:1第二个参数为:2第三个参数为:3
$# 传递到脚本的参数个数
$ 以一个单字符串显示所有向脚本传递的参数。
如”$“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
使用变量
your_name="qinjx"echo $your_nameecho ${your_name}
删除变量
使用 unset 命令可以删除变量。语法:
unset variable_name
