shell基础教程

  Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。学习shell命令主要是为了如下:
  1)需要看懂运维人员编写的Shell程序。
  2)偶尔会编写一些简单Shell程序来管理集群、提高开发效率。

1. Shell变量

  变量的命名规则如下:
  1)命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  2)中间不能有空格,可以使用下划线(_)。
  3)不能使用标点符号。
  4)不能使用bash里的关键字(可用help命令查看保留关键字)。

_var="hello world"

  通过$+变量名访问该变量

echo $_var

  可以通过readonly命令设置变量只读

readonly  _var

  可以通过unset删除该变量,之后将无法访问该变量。

unset -var

  单引号中的任何字符串都会进行原样输出,但是双引号中将会把变量替换为真实的值。

name=hello
echo '$name,world'
echo "$name, world"
echo $name"world"
echo $name'world'

  输出的结果为

$name,world
hello, world
helloworld
helloworld

  字符串的一些函数

str="hello,world"
echo ${#str}                    //打印该字符串的长度
echo ${str:1:4}              //从下标为1 的字符串截取长度为4 的字符

  数组的定义方式

1. arr_name=(value1 value2 ...)
2. arr_name=(
    value1
    value2
    ...
)
3. arr_name[0]=value1
   arr_name[1]=value2
echo ${arr_name[index]}         //获取对应下标的字符串,当index的值是@表示取所有
echo ${#arr_name[index]}      //获取对应下标的长度

2. Shell传递参数

echo 'echo $0 $1 $2' > test.sh
sh test.sh 1 2
输出: test.sh 1 2

  常用的关于参数的访问如下

  $n          获取传递脚本中第n个参数,0代表执行的文件名称,n大于10时,要用${n}
  $#          传递到脚本的参数个数 
  $*          以一个'单'字符串显示所有向脚本传递的参数。
  $$          脚本运行的当前进程ID号 
  $!          后台运行的最后一个进程的ID号 
  $@          显示所有向脚本传递的参数
  $?          显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。   

3. Shell运算符

  基本语法

`expr 运算式`   eg: val=`expr 2 + 2` 注:expr运算符间要有空格
$(( 运算式))    eg: val=$((2+2))
$[运算式]      eg: val=$[2+2]

  支持的所有运算符包括算数运算符、关系运算符、布尔运算符和逻辑运算符等等。

算数运算符

关系运算符

布尔运算符

逻辑运算符

字符串运算符

4.流程控制

1.IF ELSE

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
eg: 判断传入参数的大小
l=$1
r=$2
if [ $l == $r ]
then
  echo "$l和$r相等"
elif [ $l -gt $r ]
then
  echo "$l大于$r"
else
  echo "$l小于$r"
fi

  if else也经常和tes命令结合起来使用

if test 1 -eq 1
then echo "相等"
else echo "不相等"
fi
  1. for循环
      基本语法如下:
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
done
eg:遍历并输出数组中的每个元素
arr=(1 2 3 4)
for item in ${arr[@]}
do 
    echo "值为:$item"
done 

3.while 循环
  基础语法如下:

while condition
do
    command
done
eg: 输出10以内的偶数
n=0
while (($n <= 10))
do 
    printf "%s \t" $n
    n=$[2+$n]   
done

4.无限循环

1. 
while :
do
    command
done
2
while true
do
    command
done
3
for (( ; ; ))
do
    command
done
  1. util循环
在满足条件之前,一直会执行
until condition
do
    command
done
  1. case选择
    基本语法如下
case 值 in
模式1)
    command1
    command2
    ...
    ;;
模式2)
    command1
    command2
    ...
    ;;
esac
eg: 根据选择的数字进行回应
echo '请输入你的选择'
case $1 in
 1)
    echo "你选择了1" ;;
 2)
    echo "你选择了2";;
 *)
   echo "你选择了其他";;
esac

5. Shell函数

基本语法如下:

[ function ] funname [()]
{
    action;
    [return int;]
}
eg:对传入参数求和
function add(){
  echo "从函数中传递的参数为$1"
  echo "这是一个求和的函数"
  echo "请输入第一个参数"
  read a
  echo "请输入第二个参数"
  read b
  return $[ $a + $b ];
}

echo "函数开始"
var1=$[$1+1]
add $var1
var=$?
echo "函数执行结束,结果为$var"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容