#执行多个命令(;隔开) date;who -- 当前时间,谁登陆了系统 #创建shell脚本(文件名.sh,文本中通过#注释行) sh ly_sw_cs.sh #终端打印(echo,如果文件中出现引号需要用另一种引号来区分) echo ok echo "o'k" echo 'o"k' echo -n "ok " -- 同行显示。需要加引号并保证末尾至少有一个空格(便于区分) !注意:bash不会对echo中单引号的内容求值、不能识别双引号中的(!) #使用变量($,可使用转义\显示$,变量区分大小写) 环境变量 用户变量( 命名:字母、数字或下划线组成的文本字符串; 赋值:变量、等号和值之间不能出现空格) echo "this is an apple $hello" -- 使用双引号或不使用才能识别环境变量$hello echo $ok;ok=$hello -- 创建用户变量ok,将变量hello的值赋给ok 命令替换 —— $() today=$(date +%y%m%d) -- +%y%m%d 格式告诉 date 命令将日期显示为两位数的年月日的组合 ls -al > log.$today -- 常用。文件log.$today根据脚本运行时间改变,如log.190429 #重定向输入输出(格式:命令 符号 文件) 输出重定向(>)(>>追加数据,注意使用cat追加换行退出) 输入重定向(<)(<<内联输入重定向) wc < ly_sw_cs -- 统计文件的行数、单词数、字节数 wc << EOF > test string 1 > test string 2 > test string 3 > EOF -- 统计输入的字符串,开头自定义文本标记EOF与结尾一致 #管道(|) rpm -qa | sort | more -- rpm -qa 显示软件安装包列表,然后通过管道执行sort排序,再通过管道执行more分页显示 #执行数学运算 expr expr 1 + 2 -- 3 expr 5 \* 6 -- 30,需要对*转义 expr 5 / 2 -- 2,除法运算会保留整数部分 $[数学表达式] echo $sw_cs sw_cs=$[1 * 6] echo $sw_cs -- 6 整数运算解决方式:bash计算器(bc) bc -q -- -q 命令行选项可以不显示bash计算器冗长的欢迎信息 bc -q var1=10 var1 * 4 40 scale = 4 -- scale默认是0,保留4位 var2 = var1 / 5.2 print var2 1.9230 quit -- quit退出bash计算器 在脚本中使用bc(variable=$(echo "options; expression" | bc)) echo $var1 var1=$(echo "scale=4; 3.44 / 5" | bc) echo The answer is $var1 variable=$(bc << EOF options statements expressions EOF ) -- 脚本中使用,bc支持内联重定向 #退出脚本(变量$?) 退出脚本状态码为0表示命令成功退出,其他整数表示失败退出。 默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出(略,退出状态码可以更改) echo $? -- 查看退出状态码