shell学习笔记

一、变量的取用echo 

可以使用echo这个指令来取用变量,但是,在变量被取用时,前面必须加上$

二、设定与修改变量

myname = canghong
echo $myname

 设定的规则如下: 

(1)变量与变量内容以一个[=]来连接

(2)等号两边不能直接接空格符

(3)变量名只能是英文字母与数字,但是开头字符不能是数字

(4)变量内若有空格符可食用双引号[“]或单引号[‘]将变量内容结合起来,但

     -双引号内的特殊字符如$等,可以保有原本的特性

      

       [var=“lang is $LANG”]则[echo $var] 可得[lang is en_US]

     -单引号内的特殊字符则仅为一般字符(纯文本)

       [var=“lang is $LANG”]则[echo $var] 可得[lang is $LANG]

(5)可以使用跳脱字符[\]将特殊符号如 [Enter], $,\,空格符等变成一般字符

(6)在一串指令中,还需要藉由其他指令提供的信息,可以使用反单引号[`指令`]或[$(指令)]。注意反单引号是1左边的按键。

     [version=$(uname -r)]则[echo $version]可得[2.6.18-123.el5]

(7)若该变量为扩增变量内容时,则可用”$变量名称”或”$(变量)”累加内容

     [PATH=“$PATH”:/home/bin]

(8)若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量

     [export PATH]

(9)通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断

(10)取消变量的方法为使用unset:[unset 变量名称]例如取消myname的设定:

     [unset myname] 

三、查看变量

[env]/[export]  列出目前的shell环境下的所有环境变量与其内容

[set]  用set观察所有变量(含环境变量与自定义变量)

四、变量键盘读取、数组与宣告:read ,array , declare

(1)read [-pt] variable

选项与参数:

-p : 后面可以接提示符

-t : 后面可以接等待的[秒数]

例:

read atest  #让用户由键盘输入内容,该内容变成atest的变量
echo $test  #输出atest变量的内容
#提示用户30秒内输入姓名,该内容变成named的变量 
read -p “Please keying your name:” -t 30 named
echo $named  #输出named变量的内容 


(2)declare/typset

declare [-aixr] variable

-a:将后面名为variable的变量定义称为数组(array)类型

-i:将后面名为variable的变量定义称为整数类型(integer)类型

-x:用法与export一样,就是将后面的variable变成环境变量

-r:将变量设定称为readonly类型,该变量不可被更改内容,也不能unset

例:

declare -i sum=100+300+50  #让变量累加
echo $sum   #输出sum

declare -x sum  #将sum变成环境变量
declare -r sum  #将sum变成只读属性
declare +x sum  #将sum变成非环境变量的自定义变量
declare -p sum  #-p可以单独列出变量的类型

五、数组array变量类型

#设定var[1]~var[3]的变数
	var[1]="small min”
	var[2]="big min”
	var[3]="nice min”
	echo “${var[1]},${var[2]},${var[3]}"

六、变量的测试与内容替换

username=${username-root}   #测试一下是否存在username这个变量,若不存在则给予username内容为root
	username=${username:-root}  #若username未设定或为空字符串,则将username内容设定为root

七、bash的环境配置文件

login shell会读取以下两个文件

  1. /etc/profile : 这是系统整体的设定,最好不要修改这个档案
  2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile : 属于使用者个人设定

non-login shell这种非登入情况下读取以下文件

  1. ~/.bashrc

八、正规表示法的特殊字符

[:alnum:]  代表英文大小写字符及数字,即0-9、A-Z、a-z

[:alpha:]  代表任何英文大小写字符,即A-Z、a-z

[:blank:]  代表空格键与[Tab]按键两者

[:cntrl:]  代表键盘上面的控制按键,即包括CR、LF、Tab、Del..等等

[:digit:]  代表数字,即0-9

[:graph:]  除了空格符外的其他所有按键

[:lower:]  代表小写字符,即a-z

[:print:]  代表任何可以被打印出来的字符

[:punct:]  代表标点符号(punctuation symbol

[:upper:]  代表大写字符,即A-Z

[:space:]  任何会产生空白的字符,包括空格键,[Tab],CR 等等

[:xdigit:] 代表16进位的数字类型,因此包括:0-9, A-F, a-f 的数字与字符


延伸正规表示法

[+]    意义:重复[一个或一个以上]的前一个RE字符

[?]    意义:[零个或一个]的前一个RE字符

[|]    意义:[用或(or)的方式找出数个字符串]

[()]   意义: 找出[群组]字符串

[()+]  意义: 多个重复群组的判别


九、条件判断

if [ 条件判断式 ]; then 

#档条件判断式成立时,可以进行的指令工作内容

fi  #将if反过来写,就表示if结束


十、循环

(1)

while [condition]  

do #循环的开始

#程序段落

done  #循环的结束


(2)

until [condition]

do

#程序段落

done


(3) for var in con1 con2 con3 ….

do

#程序段落

done


(4)

for (( 初始值;限制值;执行步阶 ))

do

#程序段

done

十一、切换身份

su

若要完整的切换到新使用者的环境,必须要使用[su - username] 或[su -l username],才会连同PATH/USER/MAIL等变量都转换成新用户的环境

如果仅想要执行一次root的指令,可以利用[su —-c ‘指令串’] 的方式处理

使用root切换成为任何使用者时,并不需要输入新用户密码


sudo 
sudo -u sshd touch /tmp/mysshd   #以sshd的身份在/tmp底下建立一个名为mysshd的档案
/etc/sudoers 是有设定语法的,如果要修改,可以使用visudo


***、实例

(1)创建一个script,该script执行时,可以显示(1)目前的身份 (2)目前所在的目录

#!/bin/bash
echo -e "Your name is ====> $(whoami)"
echo -e "The current directory is ====>$(pwd)”



(2)让用户输入一个数字,程序可以由1+2+3+…..一直累加到用户输入的数字为止

#!/bin/bash
read -p "Please input an integer number:" number
i=0
s=0
while [ "$i" != "$number" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "the result of '1+2+3+...$number' is ===> $s  “


(3)创建5个账号myquota1,myquota2.....myquota3,这五个用户的密码都是password,且这5个账号所属的初始群组为myquotagrp。


#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
    useradd -g myquotagrp $username
    echo "password" | passwd --stdin $username
done














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值