操作系统

当前位置:金沙棋牌 > 操作系统 > shell基础学习,Shell函数操作总结

shell基础学习,Shell函数操作总结

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-22 11:09

1、

Shell函数操作

#! /bin/bash

echo

#! /bin/bash

echo "Hello World !"

#设置只读变量,只读变量不可修改
myUrl=""
readonly myUrl

如何运行shell文件

终端输入 

`sh 脚本的文件名.sh`

#删除变量,unset不能删除只读变量
myUrl1=""
unset myUrl1

变量

 定义变量

注意:等号两边不能有空格,否则会识别成指令

variable="some value"

让变量只读

readonly variable

删除变量

unset variable_name

使用变量(前面需要加美元符号)

echo $variable

echo $(variable)

#运行shell时会同时存在三种变量
#局部变量,环境变量,shell变量

脚本参数

传递参数: 

在终端输入 

`sh 脚本的文件名.sh 参数1 参数2 参数3`

获取第0个参数

param1=$0

获取参数个数

args_count=$#

获取所有参数 "参数1 参数2 参数3"表示

args=$*

获取所有参数 "参数1" "参数2" "参数3"表示

args2=$@

显示当前进程ID

pid=$$

后台运行的最后一个ID号

last_pid=$!

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

exit_state=$?

if

注意必须以`fi`结尾

if

if condition

then

    command

fi

if - else

if condition

then

    command

else

    command

fi

if - elif - else

if condition1

then

    command1

elif condition2

then

    command2

else

    commandN

fi

#单引号:单引号中不能有变量,不能有单引号
#双引号:双引号里可以有变量,可以出现转义字符。
your_name="qinjx"
str="Hello,I know your name is "$your_name" ! n"

 for

for var in item1 item2 ... itemN

do

    command

done

写成一行

for var in item1 item2 ... itemN; do command;done;

#拼接字符串
your_name="cye"
greeting="Hello,"$your_name" !"
greeting_1="Hello,$your_name"
echo $greeting $greeting_1

while

while condition

do

    command

done

#获取字符串长度
string="abcdefg"
echo ${#string} #输出 7

until

与`while`相反 

until condition

do

    command

done

#提取子字符串,从第二个字符开始截取4个字符。
string="runoob is a great site"
echo ${string:1:4} #输出unoo

case

必须以`esac`结尾每个分支有两个分号,`*)`表示不匹配的分支

case $aNum in

    1)  echo '你选择了 1'

    ;;

    2)  echo '你选择了 2'

    ;;

    3)  echo '你选择了 3'

    ;;

    4)  echo '你选择了 4'

    ;;

    *)  echo '你没有输入 1 到 4 之间的数字'

    ;;

esac

#查找子字符串,查找i或者s的位置, 以下脚本中 "`" 是反引号,而不是单引号 "'",
string="runoob is a great company"
echo `expr index "$string" is` #输出8

shell支持break和continue

#数组,定义数组
array_name=(value0,value1,value2,value3)

函数

funWithReturn(){

    read aNum

    read anotherNum

    return $(($aNum+$anotherNum))

}

#读取数组,${数组名[下标]}
valuen=${array_name[n]}

函数获取参数的方法与脚本获取参数方法一致

#使用@符号,可以获取数组中的所有元素
echo ${array_name[@]}

引入其他脚本

使用`.`符号引入其他sh脚本

. ./test1.sh

或者使用source

source ./test1.sh

#获取数组的长度
length=${#array_name[@]}
#或者
length=${#array_name[*]}
#取得数组单个元素的长度
lengthn=${#array_name[n]}

字符串

字符串插值

echo "${variable}"

字符串长度

length=${#variable}

子串

echo ${string:1:4}

字符串拼接

variable ="hello, "$your_name" !"

echo $greeting $variable

字符串可以使用单引号

单引号的字符串无法插值,并且无法用转义字符

#shell传递参数,在执行shell脚本向脚本传递参数时,脚本内获取参数的格式为:$n,n为一个数字,1代表执行脚本的第一个参数,2为执行脚本的第二个参数。
echo "shell 传递参数实例"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"

数组

定义数组

array_name=(value0 value1 value2 value3)

数组赋值

array_name[0]=value0

数组长度

length=${#array_name[0]}

获取数组所有元素

echo "${my_array[*]}"

echo "${my_array[@]}"

#调用时为
#chmod +x test.sh
#./test.sh 1 2 3
#结果为:
#shell 传递参数实例
#执行的文件名:./test.sh
#第一个参数为:1
#第二个参数为:2
#第三个参数为:3

关系运算符

算数运算符

- `+`,`-`,`*`,`/`,`%`,`=`,`==`,`!=`

关系运算符

`-eq` 相等?

`-ne` 不等?

`-gt` 大于?

`-lt` 小于?

`-ge` 大于等于?

`-le` 小于等于?

布尔运算符

 `!` 非

`-o` 或

 `-a` 与

逻辑运算符

`&&` 逻辑与

`||` 逻辑或

字符串运算符

 `=` 相等?

 `!=` 不等?

 `-z $str` 长度为0?

`-n $str` 长度不为0?

`$str` 为空?

文件测试运算符

`-d $file` 目录?

`-f $file` 普通文件?

`-r $file` 可读?

 `-w $file` 可写?

`-x $file` 可执行?

 `-s $file` 0字节?

`-e $file` 是否存在

#输出输入重定向
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
"<< tag" 将开始标记 tag 和结束标记 tag 之间的内容作为输

Shell重定向

 `command > file` 将输出重定向到file

`command < file` 将输入重定向到file

 `command >> file` 将输出追加到file

`n > file` 将文件描述符为 n 的文件重定向到 file

`n >> file` 将文件描述符为 n 的文件以追加的方式重定向到 file

`n >& file` 将输出文件 m 和 n 合并

`n <& file` 将输入文件 m 和 n 合并

`<< tag` 将开始标记 tag 和结束标记 tag 之间的内容作为输入

更多命令参考 

Linux命令大全

0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
$ command > /dev/null 2>&1

 

2、echo,-n参数可使下一个命令输出不换行

echo -n "The date is: "

date

图片 1

 

本文由金沙棋牌发布于操作系统,转载请注明出处:shell基础学习,Shell函数操作总结

关键词:

上一篇:没有了

下一篇:服务器常见错误代码500金沙棋牌: