shell基础2

各种引号的用法总结如下

1、 单引号 ‘

由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。

2、 双引号 “

由双引号括起来的字符,除、\、′、和”这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。对于来说,就是用其后指定的变量的值来 代替这个变量和;对于而言,是转义字符,它告诉shell不要对其后面的那个字符进行特殊处理,只当作普通字符即可。可以想见,在双引号中需要在前面加上的只有四个字符,,’和”本身。而对”号,若其前面没有加,则Shell会将它同前一个”号匹配。

3、 反引号 `

反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

if [ "$1" = "hello" ]; then
        echo "hello, who are you?"
elif [ "$1" = "" ]; then
        echo "you must input parameters,ex>{$0 somewprd}"
else
        echo  "the only parameter is ‘hello‘,ex>{$0 hello}"
fi
~

可以进行空字符串的比较 == "",这里的{} 只是一个字符


netstat -tuln

127.0.0.1 表示仅对本机开放

0.0.0.0 或者:::: 表示对整个internet开放


不能运行,尝试的例子
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

netstat_list=$(netstat -tuln)

if [ $($netstat%":80") ]; then
        echo ":80"
fi
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

testing=$(netstat -tuln | grep ":80")  #$() 命令行之前没有空格
if [ "$testing" != "" ]; then
        echo "www is running in your system"
fi
testing=$( netstat -tuln | grep ":22" )   #$() 命令行之前可以有空格
if [ "$testing" != "" ]; then
        echo " ssh is running in your system"
fi
~

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input your time:" lasttime
nowtime=$( date +%s )
lasttime=$( date --date "$lasttime" +%s )
echo $[[$lasttime-$nowtime ]]
exit 0

为什么输出来是个这了,没有进行减法操作(当作了字符串???还是(())   )
fuhui@ubuntu:~/script$ sh sh13.sh
please input your time:20150902
$[[1441177200-1434859352 ]]

正则匹配的测试
fuhui@ubuntu:~/script$ echo 1234 | grep "[0-9]\{3\}"
1234

在{}需要进行转码,没有//这样的标志


1 declare -i number

2 # 脚本余下的部分会把”number”当作整数看待.


   #!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "please input your time: ex(20100101)" lasttime

date_d=$( echo $lasttime | grep ‘[0-9]\{8\}‘)  #重点学习一下正则的匹配

if [ "$date_d" = "" ]; then
        echo "you input wrong date format.."
        exit 1
fi
declare -i date_dem=`date --date="$date_d" +%s`
declare -i date_new=$( date +%s )
declare -i date_total=$(($date_dem-$date_new))
declare -i date_day=$(($date_total/60/60/24))

if [ $date_day -lt 0 ]; then
        echo "you had been demobilization before $((-1*$date_day))"
fi
~

出现了一个错误,如下所示:

[email protected]:~/script$ sh sh13.sh

please input your time: ex(20100101)20110505

sh13.sh: 13: sh13.sh: declare: not found

sh13.sh: 14: sh13.sh: declare: not found

修改了文件属性如下,错误就没有了

chmod +x sh13.sh



case语句

case $变量名称 in <==关键词为 case ,相当于switch的变量

“第一个变量内容”) <==每个变量内容建议用双引号括起来,关键词则为小括号 )

程序段

;; <==操作结尾使用两个连续的分号来处理!

“第二个发量内容”)

程序段

;;

) <==最后一个变量内容都会用 来代表所有其他值

类似于default语句,结尾有;;符

;;

esac <==最终的 case 结尾,case的反向书写形式


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

case $1 in
"hello")
        echo "continue to do "
        ;;
"")
        echo "you should input a option"
        ;;
*)
        echo "you must input parameter,ex >$0,someoption"
        ;;
esac

fuhui@ubuntu:~/script$ sh sh15.sh 3
you must input parameter,ex >sh15.sh,someoption
fuhui@ubuntu:~/script$ sh sh15.sh hello       #输入"hello"和hello居然是一样的
continue to do
fuhui@ubuntu:~/script$ sh sh15.sh "hello"
continue to do 

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

read -p "input one of ont, two, three:" valu

case $valu in
        "one")
                echo "first"
                ;;
        "two")
                echo "second"
                ;;
        "three")
                echo "third"
                ;;
        *)
                echo "error"
                ;;
esac



函数声明必须在shell的最前面

function funName{

}


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

function prifxit(){
        echo -n "you choice is: "
}
read -p "input one of ont, two, three:" valu

case $valu in
        "one")
                prifxit; echo "first"
                ;;
        "two")
                prifxit; echo "second"
                ;;
        "three")
                prifxit; echo "third"
                ;;
        *)
                prifxit; echo "error" | tr ‘a-z‘ ‘A-Z‘   #特别注意大小写的转换
                ;;
esac
特别注意:sh sh17.sh不能运行,提示错误。这时候修改文件为可执行,就没有错误了。(虽然不知道为什么)
cp操作会复制文件的权限

fuhui@ubuntu:~/script$ chmod +x sh17.sh
fuhui@ubuntu:~/script$ ./sh17.sh
input one of ont, two, three:one
you choice is: first
fuhui@ubuntu:~/script$ ./sh17.sh
input one of ont, two, three:ss
you choice is: ERROR

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

function prifxit(){
        echo -n "the function name $0 : $1"
}
read -p "input one of ont, two, three:" valu

case $valu in
        "one")
                prifxit "fuhui"; echo "first"
                ;;
        "two")
                prifxit "hui"; echo "second"
                ;;
        "three")
                prifxit "do"; echo "third"
                ;;
        *)
                prifxit "it"; echo "error" | tr ‘a-z‘ ‘A-Z‘
                ;;
esac

函数的例子,函数内的$0并没有指明这个函数的名字,而是执行脚本的名称。
注意:函数的$1代表函数的第一个参数,依次类推
fuhui@ubuntu:~/script$ ./sh18.sh
input one of ont, two, three:
the function name ./sh18.sh : itERROR
fuhui@ubuntu:~/script$ ./sh18.sh
input one of ont, two, three:one
the function name ./sh18.sh : fuhuifirst


while [ condition ] <==中括号内为判断式
do <==do 循环的开始!
程序段落
done <==done 循环的结束

until [ condition ]
do
程序段落
done

两个循环中值得条件不一样,正好相反。

#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

while [ "$yn" != "yes" -a "$yn" != "YES" ]        #特别注意-a是&&的意思,-o是||的意思 ,支持 !=
do
        read -p "please input a option :" yn
done
echo "you option is right"


until的用法,注意准换大小写的用法


V=hello
V=`echo $V | tr ‘[:lower:]‘ ‘[:upper:]‘`
echo $V

下面的转化效果是一样的
echo as | tr ‘[:lower:]‘ ‘[:upper:]‘
echo as | tr [:lower:] [:upper:]


#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

until [ "$yn" = "YES" ]
do
        read -p "please input a option :" yn
        yn=$(echo $yn | tr ‘a-z‘ ‘A-Z‘)
        if [ "$yn" = "EXIT" ]; then
                echo "exit program"
                break;
        fi
done

计算1+2+。。。+100

declare -i num=0
done
#!/bin/bash
# program:test example 01
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

declare -i sum=0
declare -i num=0

while [ $num -le 100 ]		#特别注意 -le 平时使用的时候都是 test $num -le 100
do
        sum=$(($sum+$num))  #需要注意$sum 和sum的区别
        num=$(($num+1))
done
echo  "the sum is: $sum"
exit 0
~
echo "you option is right"
时间: 2024-10-17 08:40:41

shell基础2的相关文章

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

Linux之shell基础

Shell基础 一.shell概述 1) shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序. 我们输入的abc...24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的.我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户. 2)

【Linux系列】【基础版】第三章 Shell基础知识

3. Shell基础知识     3.1 Shell的由来         3.1.1 Bourne Agin Shell         3.1.2 其他的shell, 有 zsh, ksh等     3.2 查看有没有shell         3.2.1 yum list | grep zsh         3.2.2 ls /root/.bash_history         3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -

Linux网络配置及SSH和Shell基础

Linux网络配置及SSH和Shell基础 一.Linux网络配置     ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了. 二.hosts文件的作用及修改主机名      Hosts : The static table lookup for host name(主机名查询静态表)       Linux 的/etc/hosts是

shell基础(上)

Shell基础(上) 1.1什么是shell Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的 输入解释给操作系统.井处理各种各样的操作系统的输出结果,输出屏幕返回给用户 这种对话方式可以是 交互的方式:从键盘输入命令,通过/bin/bash的解折,可以立即得到shell的回应 非交互的方式:脚本 Shell执行命令分为两种方式 内置命令:如讲过的cd ,pwd, exit和echo等命令.当用户登录系统后,shell以及内置命令就被系统载入到内存,并且一直运行 一

Shell基础学习小结

0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本身的限制和效率问题,以下情况一般不推荐Shell: 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等). 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理). 有跨平台(操作系统)移植需求(一般使用C 或Java)

Linux学习 -- Shell基础 -- 概述

Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 -- 支持转义字符串 \e[1;31m xxx  开启颜色 \e[0m    关闭颜色 首行:#!/bin/bash #写好注释 执行方式: 方式1 sh xxx.sh 方式2 chmod 755 xxx.sh  ./xxx.sh 或 绝对路径 Linux学习 -- Shell基础 -- 概述

linux常用命令整理(五):shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

linux常用命令整理(四):软件包管理和shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

Linux学习 -- Shell基础 -- Bash基本功能

历史命令 history -c   clear -w   写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 alias 别名='原命令' 命令执行顺序: 绝对路径或相对路径 > 别名 > Bash的内部命令 > $PATH环境变量中找到的第一个命令(外部命令) 配置文件:/root/.bashrc 删除:unalias 别名 常用快捷键 输入输出重定向 标准输入输出 输出重定向 注意:2和>