1、

shell基础学习,shell基础

#! /bin/bash

#安装只读变量,只读变量不可修改
myUrl=””
readonly myUrl

#除去变量,unset不能够去除只读变量
myUrl1=””
unset myUrl1

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

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

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

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

#领取子字符串,从第贰个字符先导截取六个字符。
string=”runoob is a great site”
echo ${string:1:4} #输出unoo

#查找子字符串,查找i只怕s的岗位, 以下脚本中 “`”
是反引号,而不是单引号 “‘”,
string=”runoob is a great company”
echo `expr index “$string” is` #输出8

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

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

#利用@符号,能够博得数组中的全数因素
echo ${array_name[@]}

#收获数组的长短
length=${#array_name[@]}
#或者
length=${#array_name[*]}
#取得数组单个成分的尺寸
lengthn=${#array_name[n]}

#shell传递参数,在实施shell脚本向脚本传递参数时,脚本内获取参数的格式为:$n,n为2个数字,1表示执行脚本的率先个参数,2为举行脚本的第②个参数。
echo “shell 传递参数实例”
echo “执行的公文名:$0”
shell基础学习,Shell函数操作总计。echo “第贰个参数为:$1”
echo “第一个参数为:$2”
echo “第几个参数为:$3”

#调用时为
#chmod +x test.sh
#./test.sh 1 2 3
#结果为:
#shell 传递参数实例
#履行的公文名:./test.sh
#首先个参数为:1
#第一个参数为:2
#其多个参数为:3

#出口输入重定向
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 之间的情节作为输

0 是专业输入(STDIN),1 是明媒正娶输出(STDOUT),2
是行业内部错误输出(STDE大切诺基Haval)
/dev/null
是1个新鲜的文本,写入到它的剧情都会被撇下;若是尝试从该公文读取内容,那么怎么着也读不到。可是/dev/null
文件丰硕有用,将指令的出口重定向到它,会起到”禁止出口”的功能。
$ command > /dev/null 2>&1

#! /bin/bash
#设置只读变量,只读变量不可修改 myUrl=”” readonly
myUrl #除去变量,unset无法去除只读变量…

1、

Shell函数操作

#! /bin/bash

#! /bin/bash

echo

#! /bin/bash

echo “Hello World !”

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

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

怎么样运营shell文件

终端输入 

`sh 脚本的公文名.sh`

#剔除变量,unset不可能去除只读变量
myUrl1=””
unset myUrl1

#除去变量,unset不可能去除只读变量
myUrl1=””
unset myUrl1

变量

 定义变量

小心:等号两边无法有空格,不然会识别成指令

variable=”some value”

让变量只读

readonly variable

剔除变量

unset variable_name

使用变量(前边须求加澳元符号)

echo $variable

echo $(variable)

#运作shell时会同时设有二种变量
#一部分变量,环境变量,shell变量

#运营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”

#单引号:单引号中不能够有变量,不可能有单引号
#双引号:双引号里能够有变量,能够现身转义字符。
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

#拼接字符串
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

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

until

与`while`相反 

until condition

do

    command

done

#领取子字符串,从第③个字符起始截取6个字符。
string=”runoob is a great site”
echo ${string:1:4} #输出unoo

#领到子字符串,从第一个字符发轫截取伍个字符。
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

#查找子字符串,查找i恐怕s的地方, 以下脚本中 “`”
是反引号,而不是单引号 “‘”,
string=”runoob is a great company”
echo `expr index “$string” is` #输出8

shell支持break和continue

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

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

函数

funWithReturn(){

    read aNum

    read anotherNum

    return $(($aNum+$anotherNum))

}

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

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

函数获取参数的点子与剧本获取参数方法同样

#选用@符号,能够取得数组中的全数因素
echo ${array_name[@]}

#利用@符号,能够得到数组中的全体因素
echo ${array_name[@]}

引入别的脚本

使用`.`标志引入别的sh脚本

. ./test1.sh

要么使用source

source ./test1.sh

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

#获得数组的长度
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为2个数字,1表示履行脚本的率先个参数,2为实施脚本的第②个参数。
echo “shell 传递参数实例”
echo “执行的文本名:$0”
echo “第叁个参数为:$1”
echo “第二个参数为:$2”
echo “首个参数为:$3”

#shell传递参数,在实施shell脚本向脚本传递参数时,脚本内获得参数的格式为:$n,n为2个数字,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

#调用时为
#chmod +x test.sh
#./test.sh 1 2 3
#结果为:
#shell 传递参数实例
#履行的文件名:./test.sh
#第3个参数为: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 之间的始末作为输

#出口输入重定向
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
是行业内部错误输出(STDELX570Haval)
/dev/null
是一个区别通常的文件,写入到它的剧情都会被撇下;借使尝试从该公文读取内容,那么哪些也读不到。可是/dev/null
文件充足有用,将指令的出口重定向到它,会起到”禁止出口”的效力。
$ command > /dev/null 2>&1

0 是正统输入(STDIN),1 是正统输出(STDOUT),2
是规范错误输出(STDEEscortRubicon)
/dev/null
是一个特有的文本,写入到它的情节都会被抛弃;假设尝试从该文件读取内容,那么怎么样也读不到。但是/dev/null
文件充足有用,将下令的输出重定向到它,会起到”禁止出口”的功力。
$ command > /dev/null 2>&1

 

 

贰 、echo,-n参数可使下八个限令输出不换行

② 、echo,-n参数可使下3个指令输出不换行

echo -n “The date is: “

echo -n “The date is: “

date

date

澳门金沙国际 1

澳门金沙国际 2

 

 

相关文章