Shell脚本相关

一、几个特殊字符参数

参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

二、其他相关

单引号和双引号的区别:

单引号 ’ ':禁用扩展,即便 $ 也视为普通字符,可以说是所见即所得,即将单号引号的内容原样输出

双引号 " ":允许扩展,以 $ 引用其他变量,把双引号的内容输出出来,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出最终内容来

反撇号 ``:将命令的执行输出作为变量值,可 用$() 代替

无引号:把内容输出出来,会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字

& && | || 的区别

& Linux后台运行符号

| Linux管道符,将前面内容传递到后面

&& 前面执行成功,则执行后面的

|| 前面执行失败,执行后面的

字符串比较

str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否和str2小
str1 > str2 检查str1是否和str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

整数值比较

-eq 等于(Equal)
-ne 不等于(Not Equal)
-ge 大于或等于(Greater or Equal)
-le 小于或等于(Lesser or Equal)
-gt 大于(Greater Than)
-lt 小于(Lesser Than)

常见的中断及退出控制指令

break:跳出当前所在的循环体,执行循环体后的语句。
continue:跳过循环体内余下的语句,重新判断条件以便执行下一次循环。exit:退出脚本,默认返回值是 0。
return:用在函数里 指定返回值。
shift:用于迁移位置变量,将 $1~$9 依次向左顺序移动。

0、1>、2>、>、2>&1、&>/dev/null 分别代表什么意思

0 表示标准输入

1>表示标准输出

2>表示标准错误输出

> 默认为标准输出重定向,与 1> 相同

2>&1 意思是把 标准错误输出 重定向到 标准输出.

&>/dev/null 意思是把 标准输出 和 标准错误输出 都重定向到空

三、样例

根据文件内容创建用户密码。文件格式为 test test01 

思路

1 判断用户是否为root,echo $UID ,root账户为0,其余非0

2 按行读取文件,while read line 模式

3 判断用户是否存在,id user

4 非交互式创建用户名及密码 echo ****** | passwd user --stdin

#!/bin/bash
[$UID -ne 0] && exit 1
while read i
do 
    user=`echo $i |awk '{prnt $1}'`
    pass=`echo $i |awk '{print $2}'`
    
    id $user || useradd $user 2&1>/dev/null
    echo $pass |passwd $user --stdin
done < test.list

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值