shell脚本

shell加载配置文件

混江龙づ霸主 提交于 2020-02-07 18:54:51
shell有不同的启动方式,根据启动方式的不同会加载不同的配置文件,从而配置不同的环境变量 我们比较常见的启动方式有: 1.通过linux控制台登录或者ssh方式,启动shell,这种情况为登录式启动shell 会依次加载/etc/environment, /etc/profile, ~/.bash_profile (或者~/.bash_login 或者 ~/.profile) 而~/.bash_profile中又会加载~/.bashrc,而~/.bashrc又加载 /etc/bashrc , /etc/bashrc又加载 /etc/profile.d/*.sh 2. 通过bash -l 登录式启动shell,会加载 /etc/profile, ~/.bash_profile 但不会加载/etc/environment 3,通过bash 非登录式启动shell,会加载~/.bashrc,前面说过~/.bashrc脚本又会加载/etc/bashrc , /etc/bashrc又加载 /etc/profile.d/*.sh 可以看出上面的三种方式,不管时登陆时还是非登陆时,都会加载~/.bashrc, /etc/bashrc , /etc/profile.d/*.sh中的内容 而 /etc/profile, ~/.bash_profile只有在登录式启动的时候才会加载

登录式shell和非登录式shell

走远了吗. 提交于 2020-02-06 15:24:32
登录shell的途径 了解两种方式之间的区别,就要先了解shell的配置文件: bash的 配置文件 全局 配置文件 /etc/profile /etc/profile.d/* /etc/bashrc 个人 配置文件 ~/.bash_profile ~/,bashrc 由上可知,bash的 配置文件 分别为 profile类 文件和 bashrc类 文件: profile类文件作用: 1. 设定环境变量 。 2. 运行命令或脚本 (登录时运行的脚本)。 bashrc类文件配置作用: 1.设定本地变量。 2.定义命令别名 了解以上配置文件后,则: 登录式shell 读取配置 文件过程: /etc/profile –> /etc/profile.d/*.sh –> ~ /.bash_profile –> ~ /bashrc –> /etc/bashrc 非登录式shell 读取配置 文件过程: ~ /.bashrc –> /etc/bashrc –> /etc/prodile.d/*.sh 而登录式shell和非登录式shell的运行形式如下: 登录式shell: 正常通过某终端登录的shell。 su - username 。 su -l username 。 非登录式shell: su username 。 图形终端 下打开的命令窗口。 自动执行的shell脚本。 来源: CSDN

shell脚本报错:value too great for base (error token is "08")

試著忘記壹切 提交于 2020-02-06 02:17:07
在shell开发中,会遇到将10以内的数字前面加0的情况,例如按小时分区执行hive脚本,具体代码如下: #!/bin/sh START_DAY = $1 END_DAY = $2 FLAG_DAY = ${START_DAY} START_HOUR = $3 END_HOUR = $4 executeHive ( ) { while : do local STAT_HOUR = 00 local FLAG_HOUR = 23 local START_DAY = $( date -d " $START_DAY 1day" +%Y%m%d ) local STAT_DAY = ` date -d " ${START_DAY} -1 day" +%Y%m%d ` # 判断执行日期是否为开始日期或结束日期 if [ ${STAT_DAY} -eq ${FLAG_DAY} ] ; then STAT_HOUR = ${START_HOUR} elif [ ${STAT_DAY} -eq ${END_DAY} ] ; then FLAG_HOUR = ${END_HOUR} fi while : do printf "[INFO] ` date '+%F %T' ` current execute partition is dt= ${STAT_DAY} hour= ${STAT_HOUR}

Linux基础(五) Shell函数

落爺英雄遲暮 提交于 2020-02-05 12:10:09
Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255 下面的例子定义了一个函数并进行调用: #!/bin/bash # author:菜鸟教程 # url:www.runoob.com demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----" 输出结果: -----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕----- 下面定义一个带有return语句的函数: #!/bin/bash # author:菜鸟教程 # url:www.runoob.com funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo

shell编程(五)之函数

。_饼干妹妹 提交于 2020-02-05 12:09:53
function:函数 函数只有被调用才会执行 如何调用:给定函数名   函数名出现的地方,会被自动替换为函数代码 函数的生命周期:被调用时创建,返回时终止 return命令返回自定义状态结果   0:成功   1-255:失败 语法一:   function f_name {   ...函数体... } 语法二: f_name(){   ...函数体... } 练习: 写一个脚本,完成如下要求 1.脚本可接受参数:start,stop,restart,status 2.如果参数非此四者之一,提示使用格式后报错退出 3.如果是start,则创建/var/lock/subsys/SCRIPT_NAME,并显示启动成功 考虑: 如果事先已经启动过一次,该如何处理 4.如果是stop,则删除/var/lock/subsys/SCRIPT_NAME,并显示停止完成 考虑: 如果事先已然停止过了,该如何处理 5 如果是restart,则先stop,在start 考虑:如果本来没有start,如何处理 6.如果是status,则: 如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示”SCRIPT_NAME is running“ 如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示”SCRIPT_NAME is stopped“ #!/bin

Shell脚本笔记(五)Shell函数

心不动则不痛 提交于 2020-02-05 12:09:36
Shell函数 1.定义语法 标准写法: funciton funName () { order....... return n } 简化写法1: funciton funName { order....... return n } 简化写法2: funName () { order....... return n } 注意: 1)不加rueturn的情况下,函数返回码是函数中最后一条命令返回的退出状态码。 2)退出状态码必须是0~255 2.函数执行 1)不带参数函数:直接函数名 funName 2)带参数函数: funName arg1 arg2(必须放在同一行) 3)函数命令行上任何参数都可以通过 $1 $2......取得 1 #!/bin/bash 2 test () { 3 echo $[ $1 * $2 ] 4 } 5 test $1 $2 #函数参数位置变量,使用脚本参数位置变量 3.注意事项: 1)可以使用 "."或者"source"来加载定义在独立文件中的函数,以供调用 2) 使用local定义局部变量 3) 可使用位置变量作为函数的参数使用,此时父亲脚本中的位置参数被临时覆盖,函数执行完毕后恢复 4)函数的输出 result=$(fun) 5)获取命令行最后一个参数${!#},不是${$#}因为不能再花括号内使用美元符。 来源: https://www

Shell脚本(五)函数

大憨熊 提交于 2020-02-05 12:09:19
总结下shell中的函数用法 #!/bin/bash function add_v1() { echo "call function add" } function add_v2() { echo "number of params: $#" echo "first param: $1" echo "second param: $2" local sum=0 for item in $@ do sum=$(($sum + $item)) done echo "result is $sum" } function add_v3() { local sum=0 for item in $@ do sum=$(($sum + $item)) done return $sum } # another way to return value function add_v4() { local sum=0 for item in $@ do sum=$(($sum + $item)) done echo $sum } global_variable=0 function add_v5() { local sum=0 for item in $@ do sum=$(($sum + $item)) done global_variable=$sum } add_v1 add_v2 10 20 30

shell操作mysql之增删改查

送分小仙女□ 提交于 2020-02-05 02:45:53
假设mysql用户名root 密码123456,新建测试数据表utable 脚本如下: #!/bin/bash #mysqlop.sh mysql="/app/local/mysql/bin/mysql -uroot -p123456" #sql="show databases" #sql="show tables from test" sql="create table test.utable( id int unsigned auto_increment primary key, username varchar(50), passwd varchar(50) )" #sql="desc test.utable" #sql="insert into test.utable(username,passwd) values('user3',321)" #sql="select * from test.utable" #sql="delete from test.utable where id=3" #sql="update test.utable set passwd=135 where id=2" #sql="drop table test.utable" $mysql -e "$sql" #sh mysqlop.sh 新建完成后需要注释掉创建语句,继续编辑脚本 #!/bin

shell 脚本语言学习

前提是你 提交于 2020-02-04 20:07:55
Bash 变量类型 环境变量 作用域为当前 shell 进程及其子进程 Export varname=vlaue 定义为环境变量 脚本在执行时启动一个子 shell 进程: 命令行中启动的脚本会继承当前 shell 环境变量 但是如果是系统自动自行的脚本(非命令行启动)就需要自我定义需要各种环境变量 本地变量(局部变量) 位置变量 $1 $2 $@表示所有参数 $#表示参数个数 特殊变量 $? : 上一个命令的执行状态返回值 本地变量: Bash :是进程额变量 撤销变量 Unset varname 查看当 shell 中变量 Set 查看当前 shell 中的环境变量 Printenv Env Export 来源: https://www.cnblogs.com/ericnie11/p/11180111.html

shell编程(一)之变量

情到浓时终转凉″ 提交于 2020-02-04 20:04:00
变量:命名的内存空间 bash的变量种类: 根据变量的生效范围等标准 本地变量: 生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 环境变量: 生效范围为当前shell进程及其子进程 局部变量: 生效范围为当前shell进程中某代码片段(通常指函数) 位置变量: $1,$2...来表示,用于让脚本在脚本代码中调用通过命令行传输给它的参数 特殊变量: $?、$0, $*, $@, $# 变量命名法则: 1. 不能使用程序中的保留字:if,for 2. 只能使用数字、字母及下划线,且不能以数字开头 3. 见名知意 只读变量: readly name declare -r name 本地变量: 变量赋值:name='value' 可以使用引用: value: 1. 可以是直接字串,name="username" 2. 变量引用: name="$username" 3.命令引用: name=`COMMAND`,name=$(COMMAND) 变量引用:${name}, $name "": 弱引用,其中的变量引用会被替换为变量值 '': 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 显示已定义的所有变量 set 销毁变量:unset name 环境变量: 变量声明、赋值 export name=VALUE