linux下的变量及shell脚本中变量传参及其函数调用
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
变量的作用:处理变化的值必须有固定的值来表示
用户级的变量(优先级高,文件后被加载) 在./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
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献4条内容
所有评论(0)