#!/bin/bash #表示shell解释器的位置 可用 which bash 或者whereis bash 查找
set -e #该行如果出错,程序就中断,如果不加该行,程序中途出错就会继续执行,风险比较高。
a=$(ls $1*|wc -l) #ls 列出文件夹下文件,删选$1参数开头的文件,wc -l统计行数
if [ "${a}" == "3" ]; then #判断变量a的值是不是3,注意[]中两端有空格
echo "yes" #输出 字符串
else
#su - zll2 -s /bin/bash /home/zll2/bin/3.sh $1 #切换用户到zll2下 -s 后可以跟一个shell脚本 #c "需要执行的命令" 可以把$1作为参数传给 3.sh
/bin/bash /home/zll2/bin/3.sh $1
fi #if的结束符
a=12344
unset a 删除变量a
echo $a 输出a的值
echo $aasdfg 输出12344asdfg
echo $0 输出脚本名
echo $? 输出前一个命令的执行结果标志 0 成功 1 失败 可以在每个命令后加判断
echo `ls $1*|wc -l` 输出 前一条命令的结果 用esc 下面的点号不是单引号括起来,单引号会输出字符串
echo ${a:0:3} 输出123 从第一位开始截取3位
echo ${a:0:3} >>1.txt 输出字符串的内容重定向到1.txt中 >>是替换原来内容,>在原内容追加
pwd 1>>1.txt 2>>txt pwd的输出如果成功,把结果重定向到 1.txt 失败输出到2.txt >>前的数字1代表成功 2表示失败
pwd 1>1.txt 2>&1 所有的日志都输出到1.txt中
cat >123.txt 输入重定向 到123.txt 键盘输入随意字符串重定向到 123.txt中
cat >123.txt <<EOF 输入重定向 EOF 是一个启停标识 end of file
dfghdcvbn
fghjkcvb
EOF#结束标志符
#!/bin/bash
#在shell脚本中执行sql脚本 传入$1参数
set -e
sqlplus test/test@testdb<<EOF
@test.sql $1
commit;
EOF
#!/bin/expect //这个expect的路径就是用which expect 查看的结果
#利用expect可以把交互式的命令写入脚本
#yum -y install expect安装expect
spawn su - zll2 #执行shell命令
expect "Password:"#判断标准输出是否包含字符串Password:
send "zll243249703~/r"#如果包含就输入以下命令,和在命令行手动输入一样 /r 表示换行,类似于回车键
interact #退出该交互过程
#其他的交互过程也可以这样写,在shell脚本中遇到交互的命令就需要手动输入,这样降低了程序的自动化过程,所以shell脚本中可以调用expect脚本 expect 1.sh
- shell脚本在写完以后 需要改变其模式 chmod +x 1.sh 改为可执行状态,默认是所有者,同用户组的其他人,其他用户,+x都有执行的权利。uog+x
user groupuser otheruser