Linux操作系统编程(3)—— shell编程基础
前两篇文章分别是 常用linux操作命令
,已经讲述了linux基本命令和文件系统、帮助系统等,因此本文来梳理一下shell编程的语法和样例
变量
在shell中可以直接定义变量并给变量赋值,使用起来感觉类似python
p=1
a=123
#要注意,这里不能有空格,因为添加空格之后就变成一个命令了
如果我们要编写一个脚本的话,就需要先创建一个脚本文件, vim 1.sh 即可
这个脚本的第一行是告诉大家,计算机要用bash解释这个文件,实际上,由于现在的系统比较智能,即便删除了这句话也是可以执行的。
**命令替换符 **
A=`pwd`
#这里的``就是命令替换符,不是单引号,而是键盘左上角,esc下边的那个键
WorkDir=`pwd`
echo -e "ln\033[31;32m${WorkDir}\033[0m"
这里的$是将变量的值取出来,{}起到了确定变量范围的作用,如果是比较简单的命令,不写{}也是可以的。
除了我们自己定义的变量之外,我们编写脚本的时候还要注意有一些特殊的变量、
$0 表示程序自己
$1 表示第一个参数,以此类推,$2 表示第2个参数
$# 得到执行当前脚本的参数个数
$* 获取当前shell的所有参数,将所有命令参数视为单个字符串
$@ 也表示所有参数, 但是所有参数是分开的,保留参数之间的空白,可以传参给别的程序
$? 判断上一条指令是否执行成功, 0 表示成功,其他数字表示不成功
$$ 取当前进程的PID
$! 上一个指令的PID
#!/bin/bash
echo "hello, everyone!"
#是注释,第一行是固定格式,说明解释器
WorkDir=`pwd`
echo -e "In\033[31;32m ${WorkDir} \033[0m"
echo "program Name : $0"
echo "arg1: $1"
echo "arg2: $2"
echo "arg3: $3"
echo "arg4: $4"
echo "arg5: $5"
echo "arg6: $6"
echo "\$@ : $@"
echo "\$* : $*"
echo "\$# : $#"
ls /etc1
echo "\$? : $?"
last | grep "xxx" 1>/dev/null 2>/dev/null
if [[ $? -eq 0 ]];then
echo -e "$Name logged In!\n"
fi
参数展开
${parameter:-word} 如果变量未定义,则表达式的值为word
${parameter:=word} 如果变量未定义,则设置变量的值为word,返回表达式的值也是word
${parameter:?word} 用于捕捉由于变量未定义而导致的错误并退出程序
${parameter:+word} 如果变量已经定义,返回word也就是真
${!prefix*}
${!prefix@} prefix 开头的变量
字符串展开
${#parameter} 输出字符串的长度
${parameter:offset} 从第offset开始截取
${parameter:offset:length} 从offset开始截取,取length长度