linux下的变量及shell脚本中变量传参及其函数调用

变量的作用:处理变化的值必须有固定的值来表示
用户级的变量(优先级高,文件后被加载) 在./profile中定义
系统级的变量 在/etc/profile中定义
环境级的变量 a=1 export a=1
1.变量:以字母开头字母、数字和_的组合

    a=1  设定之后子进程不能访问(如 sh westos(echo $a))
    export a=1  声明a=1在父进程中(相当于放在公共区域,子进程可以访问)
    echo $a 
设置 命令执行时读取的文件
   PATH=$PATH:/mnt
   echo $PATH

\ 单个转译
“” 批量转译 (不能转译!,$,,“)
” =\的批量转译

$()=``      7版本linux中无区别 ``拓展型的拓展接口
$[]=(())    $[1+1]将可变长字符转换成整型的(可变长字符:节省系统资源)
${}         {}中的字母为变量

2.变量值传递
非交互:

    $0       脚本的名字
    $1       脚本后的第一串字符串
    $2       脚本后的第二串字符串
    $3       脚本后的第三串字符串
    $#       脚本后所跟字符的个数
    $*       脚本后跟的所有字符串,模式如“1 2 3 ……”
    $@       脚本后跟的所有字符串,模式如“1” “2” “3” ……

验证以上变量传值的功能?

    #!/bin/bash
    echo \$0 is $0
    echo \$1 is $1
    echo \$2 is $2
    echo \$3 is $3
    echo \$4 is $4
    echo \$# is $#
    echo \$* is $*
    echo \$@ is $@

验证 ∗ 和 @有和区别

    #!/bin/bash
    for name in "$@"
    do
            echo $name
    done
    #!/bin/bash
    for name in "$*"
    do
            echo $name
    done

这里写图片描述
非交互式传参 (利用文件创建用户)?

    #!/bin/bash
    [ $# != 2 ]&&{
            echo "please input userfile and passwdfile"
            exit 1
    }
    MAX_LINE=`wc -l $1 | cut -d " " -f 1`
    for LINE_NUM in `seq 1 $MAX_LINE`
    do
            USERNAME=`sed -n "${LINE_NUM}p" $1`
            PASSWD=`sed -n "${LINE_NUM}p" $2`
            useradd $USERNAME
            echo $PASSWD | passwd --stdin $USERNAME
    done

这里写图片描述
交互式传参 ?

    #!/bin/bash
    read -p "please input a number:" -s IP(-p 后跟提示内容  -s 表示不显示输入的内容)
    echo " "
    ping -c1 -w1 $IP &> /dev/null && echo $IP is up || echo $IP is down

这里写图片描述
交互式设定用户文件和密码文件建立用户?

    #!/bin/bash
    read -p "please input a userfile:" USER
    [ ! -e $USER ] && {
            echo "$USER is not exist"
            exit 1
    }
    read -p "please input a passwdfile:" PASS
    [ ! -e $PASS ] && {
            echo "$PASS is not exist"
            exit 1
    }
    MAX_LINE=`wc -l $USER | cut -d " " -f 1`
    for LINE_NUM in `seq 1 $MAX_LINE`
    do
            USERNAME=`sed -n "${LINE_NUM}p" $USER`
            PASSWD=`sed -n "${LINE_NUM}p" $PASS`
            useradd $USERNAME
            echo $PASSWD | passwd --stdin $USERNAME
    done

这里写图片描述
命令别名的设定:

   alias xie='vim'       shell 环境变量
   vim .bashrc
    alias xie='vim'      用户变量
   source .bashrc
   vim /etc/bashrc
    alias xie='vim'      系统变量
   source /etc/bashrc
   删除文件中写的内容
   unalias xie           撤销别名

退出值($? 查看命令的退出值 退出值为0是为正常退出,其他为不正常退出
这里写图片描述

    #!/bin/bash
    [ -z $1 ]&&{
            echo "please input a IP"
            exit 1
    }
    ping -c1 -w1 $1 &> /dev/null
    [ $? = 0 ]&& echo $1 is up || echo $1 is down

这里写图片描述
使用函数作用:1.简化脚本内容,使脚本可读性更高。2.可以重复多次调用

#!/bin/bash
ACTION_ADD(){
        [ "$1" = add ]&&{
                read -p "please input a username:" USERNAME
                read -p "please input a password:" -s PASSWORD
                echo ""
                useradd $USERNAME
                echo $PASSWORD | passwd --stdin $USERNAME
        }
}
ACTION_DEL(){
        [ "$1" = del ]&&{
                read -p "please input a username:" USERNAME
                userdel -r $USERNAME
        }
}
USER_CTL(){
        read -p "please input action:" ACTION
        [ "$ACTION" = exit ]&&{
                echo bye~~
                exit 0
        }
        ACTION_ADD $ACTION
        ACTION_DEL $ACTION
        USER_CTL
}
USER_CTL

这里写图片描述

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值