Shell scripts容易入门
Shell scripts简单入门
shell脚本其实就是纯文本文档,我们可以编辑这个文档,然后让这个档案来帮助我们一次执行多个指令,或者达成某些特定功能。
注意事项:
- 指令的执行时从上到下,从左到右
- 指令、选项与参数之间的多个空白都会被忽略掉
- 空白行也会被忽略掉,并且tab同样视为空格
- 如果读取到一个enter符号,就会尝试改行命令。可以用’\’来转义一个enter。
- #后面是批注,不被执行
shell脚本执行方式
- 直接当做命令下达:该档案必须有rx权限,然后必须可以找到该命令,即要么通过绝对路径或相对路径,或者利用环境变量PATH
- 以bash程序来执行:通过bash shell.sh或许sh shell.sh来执行(shell.sh是我们写好的脚本)。
这时相当于一个子程序中执行,所以在shell.sh中自定义的变量不会保留到父程序当中。除非在脚本中加入export,把自定义变量加入到环境变量
3.用source命令来执行:这时就是在父程序中执行脚本
判断语句
test
例子:
test -e /de /* 判断/de是否存在 */
[]
例子:
[ -z "$HOME" ] /* 注意空格! */
注意:
- []内的每个组件都要用空格隔开
- 括号中的变数,最好都以双引号括起来
- []中的常数,最好都以单或者双引号括起来
Shell脚本中的参数
默认参数 $0, $1…
例子:比如我一个脚本shell.sh,那么我输入./shell.sh 1 2 3
传给我这个脚本的默认参数是
./shell.sh 1 2 3
$0 $1 $2 $3
即我可以在我的脚本中$0来表示./shell.sh,$1来表示1。
shift
在脚本中使用
shift n
/* 表示上面的脚本参数要左移n个单位,例如
shift 1,那么现在的1要用$0来表示
*/
条件判断
利用if then
1.单层,简单条件判断
if [条件];then
//条件成立时的语句
fi
2.多重判断
if [条件1];then
//条件1成立时的语句
elif [条件2];then
//条件2成立时的语句
else
//条件1与条件2都不成立时的语句
fi
case判断
语法:
function
声明与定义一个function:
function fname()
{
/* 程序段内容 */
}
function也可以有参数
function print()
{
echo "the first argument $0"
/* 这里0代表的是传给print的第一个参数 */
}
print 1 2 3
/* 这里类似于传给我们shell的参数一样 1是第二个参数 */
循环
while do done, until don done
for do done
这里var可以是前面没有声明的
shell脚本中的这个for循环是知道循环次数的,即con的个数是固定的,所以是一种固定循环
第二种写法: