ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Shell编程

2021-12-09 21:32:08  阅读:111  来源: 互联网

标签:bin Shell val 编程 echo array hello bash


Shell编程

1. 编写shell脚本

  • # 号开头注释
  • #!指定运行环境
#!/bin/bash
# -n 显示信息时不自动换行
echo -n "hello,world"

#  `` 用于命令替换,将扩起来额字符串视为命令执行,并将输出的字符串在原地展开
echo -n "用户名 `whoami` "

2. 运行shell脚本

  1. 给脚本添加执行权限 (假定脚本名叫 hello)
# 添加执行权限
chmod -x hello
# 运行
./hello
  1. 在指定的shell下执行脚本
# 1
sh hello
# 2
bash hello
# 3 调试的时候使用,先打印原语句,在打印执行结果
bash -v hello
# 4 调试的时候使用,打印出经过替换后的命令行内容 
bash -x hello

3. shell 变量

1. 变量赋值和访问

注意:给变量赋值时,等号两边不要有空格

# 赋值
x="hello,world"
# x的值会被覆盖
x=8;
y=$x+5    # y=13

skill="Shell"
# 如果不加大括号,会将 $skillScript当做一个变量。给所有变量加上花括号是一个好的编程习惯
echo "I'm good at ${skill}Script"

hello="hello,world"
# 只读变量,不能被修改
readonly hello
# 删除变量
unset hello

2. 内部变量

变量含义
$0当前脚本的文件名
$n传递给脚本或者函数的参数
$#传递给脚本或者函数的参数个数
$*传递给脚本或者函数的所有参数
$?上个命令的退出状态,或者函数的返回值
$$当前shell进程ID
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
echo $*
echo $?
echo $$

image-20211207155845235

  • 在 shell程序中,可以使用 set 命令为位置参数赋值或重新赋值.
set BB CC

3. 变量值输出

  • 如果需要原样输出字符串(不需要进行转义),则应使用单引号。
str="hello"
echo "$str"   # 输出 hello
echo '$str'   # 输出 $str

输出内容使用双引号,如果需要 原样输出 美元符号($),反引号(`),双引号("),需要使用转义符号 (\)。

4. 变量值读取

#!/bin/bash
# 从键盘输入变量
read -p "请输入两个数字:" p1 p2
echo $p1
echo $p2

image-20211207161326168

5. 数组

#!/bin/bash
# 初始化数组
array=(1 2 3 4 5)
# 更改数组内容
array[0]=6
array[1]=7

echo ${array[0]}
echo ${array[1]}
# 输出数组中所有元素
echo ${array[*]}
# 输出数组个数
echo ${#array[@]}
# 输出单个元素的长度
echo ${#array[3]}

image-20211207162257091

4. 表达式与运算符

a=3
b=4
# 运算符之间有空格
var=`expr $a + $b`
# 使用乘号要使用转义
var=`expr $a \* $b`

val=$[$a+$b]  # val=7
val=$[$a-$b]  # val=-1
val=$[$a*$b]  # val=12
val=$[$a/$b]  # val=0

5. 流程控制

1.条件语句

#!/bin/bash
a=3
b=5
# 注意空格   也可以写成[ $a -eq $b ]
if [ $a == $b ]
then 
   echo "a=b"
elif [ $a -lt $b ]
then 
   echo "a<b"
elif [ $a -gt $b ]
then 
   echo "a>b"
else
   echo "error"
fi

2.case语句

#!/bin/bash
# 从键盘读取的第一个数
n=$1
case $n in
1)
  echo "输入1"
  ;;
2)
  echo "输入2"
  ;;
3)
  echo "输入3"
  ;;
*)
  echo "其他数"
esac

image-20211209210334739

3. 循环结构

while循环

#!/bin/bash
total=0
num=0
while [ $num -lt 100 ]
do 
   total=$[$total+$num]
   num=$[$num+1]
done
echo "total: $total"

for 循环

#!/bin/bash
list=(1 2 3 4 5 6 7 8 9)
for val in ${list[*]}
do 
    echo -n $val
done

4. 函数

#!/bin/bash
add(){
   val=`expr $1 + $2`
   return $val
}
# 给函数传递参数
add 4 5
# #? 获取函数的返回值
echo $?   # 输出9
echo "val: $val"  #输出 val:9 

标签:bin,Shell,val,编程,echo,array,hello,bash
来源: https://blog.csdn.net/love521314123/article/details/121844478

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有