shell命令

shell命令

基本命令

# shell脚本出现问题时及时报错并退出执行
set -eu  
# 设置环境变量
set +o posix
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/git/bin

# 赋值, 获取当前时间
product_date=`date +%Y%m%d`             # 操作日期
product_time=`date +%H%M%S`             # 操作时间
path="/home/vlog"

# 将cGFzc3dvcmQK通过base64解码后的值作为ftp_pass传入
ftp_pass=$(base64 -d <<< "cGFzc3dvcmQK") 

# 获取本机IP
local_ip = `/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`

# 进入路径
cd ${path}

# 字符剪切
 ${filename:2:11}

if判断

# 判断文件夹是否存在
if [ ! -d "backup/${product_date}" ]; 
then
    mkdir -p backup/${product_date}
fi
# 判断文件是否存在
if [[ ! -f "$filename" ]]; then
	echo "file $filename not existed, exit"
	exit
fi

# 文件赋权
chmod u+x ${root_path}/node_modules/.bin/react-app-rewired

# 后台启动
nohup java -jar ${MSLIV_NETTY}/xxx.jar > /dev/null 2> /dev/null &

参数校验

NAME="$1"
# 参数校验
if [[ -z "$NAME" ]]; then
echo "输入参数为空"
exit
fi
# 判断是否有参数
if [ ! $# == 0 ];then
    echo "有参数"
fi

# 读取用户输入
echo -n "please input the username:"
read username
echo $username

链接ftp

# 链接lftp获取资源文件
lftp $ftp_user:$ftp_pass@$ftp_ip << End-Of-Session
cd $ftp_path
get something.zip
bye
End-Of-Session

# 链接ftp获取资源文件
echo "获取ftp文件"
ftp -n $ftp_ip  <<End-Of-Session     
user $ftp_user $ftp_pass
cd ${ftp_path}   
bin
prompt off
get something.zip
mget *.zip
bye
End-Of-Session

# ssh 登录 命令行直接输入密码
wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz
tar xvzf sshpass-1.05.tar.gz
cd sshpass-1.05
./configure
make
make install

sshpass -p password scp -r ${product_date}_${version}_${order_no}/ user@ip:path

删除过期文件

# 删除七天前文件
find /home/vlog -mtime +7 -type f -name 'test*' -exec rm -f {} \;

链接oracle

# 链接oracle数据库表
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8' # 设置编码格式
passwd=$(base64 -d <<< "cGFzc3dvcmQK")
sqlplus -S ${serviceName}/${passwd}@${oracleIP}:${oraclePort}/${ORACLE_NAME} <<EOF
... SQL操作
EOF
-- 将oralce结果写入到文件
set pages 0
set linesize 500
set head off
set feedback off
spool $file1
SELECT MOBILENO||'!^'||ADDRESS||'!^' from ORALCE_TABLE;
spool off

-- 将文件数据导入数据库
LOAD DATA
CHARACTERSET AL32UTF8
INFILE 'data.unl'
INTO TABLE TABLE_NAME
FIELDS TERMINATED BY '|'
(COLUMN1,COLUMN2,COLUMN3,COLUMN4)

循环遍历

# 遍历sql脚本汇总到一张表
echo "创建total_exec.sql文件"
touch total_exec.sql
# 遍历当前文件夹,将名字写入total_exec.sql
# 获取数组长度 ${#table_names[@]} 获取元素 ${table_names[$i]}
# 判断大小: if [ x -ge y ]   ge = >=, eq = =, ne = !=, lt = <, gt = >, le = <=, ge = >=  
for i in $(seq $index $[$table_names_length-1]); do # $[$table_names_length-1] 获取数组长度
...
done

for file in ./*
do
    if [ ! "${file}" = "./total_exec.sql" ]; then
        echo "sql文件:${file}"
        echo "@@${file}" >> total_exec.sql
    fi
done

for folder_dir in $(ls ./)
do
    echo "folder_dir!!: $folder_dir"    # 遍历所有项目下文件夹
    if [ -f $folder_dir ]; then
        mv $service_path/$folder_dir $bak_path
        cp $folder_dir $service_path
        echo "$folder_dir is a file!!!"
        continue
    fi
    cd $folder_dir
    for filename in ./*                 # 遍历文件
    do
        echo "filename: $filename"
        file_path=${folder_dir//"_"/"/"}
        mkdir -p $bak_path/$file_path    
        abs_file_path=$service_path/$file_path/$filename    # 文件绝对路径
        if [ -f $abs_file_path ]; then
            mv $abs_file_path $bak_path/$file_path       # 文件备份
            echo "${abs_file_path} backup finished"
        fi
        cp $filename $service_path/$file_path           # 替换更新
        echo -e "$filename update finished \n"
    done
    cd ..
done

根据git diff分割文件作为数据

diffFile=`git diff remotes/origin/pro-20211207 remotes/origin/master --name-only`

# 将diff结果作为数组存储
fileArray=${diffFile//\\n/ }
#遍历数组
for file in ${fileArray[*]} # 遍历数组所有元素
do 
  path=${file//\// }
  con_path=''

  for folder in ${path[*]}
  do 
    if [[ ! ${folder} =~ '.' ]]; then
        echo "folder: ${folder}"
        con_path="${con_path}_${folder}"
    fi
  done
  file_path=${con_path#*le_}
  echo ${file_path}
  mkdir -p ./${project}/${file_path}
  cp ${file} ${project}/${file_path}/
done

操作文件

# 移动所有可见文件
mv .[^.]* "../backup/${backupFile}"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值