Shell语言

chmod 更改权限

文件调用权限分为三级,文件所有者(usr),用户组(group),其他用户(orthers),a(all)

+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限
r 表示可读取,4
w 表示可写入,2
x 表示可执行,1
X 表示只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
修改一个文件可读可写可执行,可以是
chmod 777 file 或者是 chmod +x file
如果是在当前目录下写了一个脚本文件,并命名为test.sh,此时的权限是可读可写,不可执行,怎么更改为可执行呢
chmod 777 ./test.sh 或者 chmod +x ./test.sh
ls,此时test.sh文件由白色变为绿色,./test.sh即可执行脚本
注意: chmod 后面跟的是./test.sh,而不是test.sh,如果不加当前目录下,系统会自动去PATH路径找,这个文件不在PATH路径下,所以应该加当前目录下。

设置环境变量

#!/bin/bash
alias 给一个东西起别名,=左右两边不能有空格
alias m_name="csdn" 或者alias m_name='csdn'
使用环境变量要加$符号,{ }最好加上,告诉计算机这是一个整体
echo ${m_name}
运行此脚本,屏幕上即会出现csdn

注释

单行注释#
多行注释 开头是冒号 空格 单引号,结尾处是单引号
: '
xxx
'

只能创建一维数组

array_name=(value_1 value_2 value_3 value_4 value_5)
创建数组区别于其他语言是小括号()
各个元素之间用空格隔开	
@可以获取数组所有元素,echo ${array_name[@]}
*也可以获取数组的所有元素,echo${array_name[*]}
#可以取得数组元素的个数,echo${#arrayy_name[@]}

Shell传递参数

$0 表示当前执行的文件名
$1 表示传入的第一个参数值
$2 表示传入的第二个参数值
$3 表示传入的第三个参数值
$# 表示传入的参数的个数
$* 表示用一个字符串表示传入的参数
$@ 也是用一个字符串表示传入的参数
但区别在于$@表示传入的参数是3个,而$*表示传入的参数是1个
传入参数方式 ./test.sh 1 2 3 参数之间用空格隔开

Shell进行数学运算

数学环境 :两个反引号,位于Esc下面 `  `
紧接着,``反引号里面写expr,是用于计算数据的
在算数运算符前加转义字符'\'
示例:
val=`expr 2 \* 4 `
echo "val的值是: ${val}"

Shell基本运算符

算数运算符:+  -  *  /  %  =  ==  !=
关系运算符(只支持数字,不支持字符串,除非字符串的值是数字)-eq  -nq  -gt  -lt  -ge  -le
布尔运算符:!  -o   -a  非 或 与
逻辑运算符:&&  ||   且 或
字符串运算符:=  !=  -z  -n  $
文件测试运算符:
-b 监测是否是设备文件 
-c 监测是否是字符设备文件
-d 监测是否是目录文件 
-f 监测是否是普通文件 
-p 监测是否有管道
-r 监测是否可读 
-w 监测是否可写
-x 监测是否可执行
-s 监测文件是否为空
-e 监测文件是否存在

Shell echo命令

显示普通字符:" ",' ', 或者什么都不加
显示转义字符就是加 \ 
显示变量是加 "  ",变量名前加$
显示换行/不换行可以用  -e命令  echo -e " \n  \c "
-e命令相当于开启转义,等价于\
显示命令执行结果 echo ` ` 如显示日期 echo `date`
echo命令默认是自动换行

Shell printf命令

printf不会像echo自动换行,需要手动加\n
 
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

执行脚本,输出结果如下所示:

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

%s %c %d %f 都是格式替代符,
%s 输出一个字符串,
%d 整型输出,
%c 输出一个字符,
%f 输出实数,以小数形式输出。

%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数。

source(.)和bash命令

都是读取并执行脚本文件的意思 
使用source命令运行脚本时,脚本在当前shell进程内执行,这意味着脚本中设置的变量和修改的环境将影响当前shell进程。
使用bash命令运行脚本时,会在一个新的子shell中执行脚本,不会影响当前shell进程的环境。

一个脚本文件test1.sh里嵌套一个脚本文件test2.sh时, test1.sh里面可以写

 . ./test2.sh
 source ./test2.sh
 bash ./test2.sh

其中嵌套的脚本文件不需要具备可执行权限

[ ]符号

[  ] 是一个条件测试的标记。它可以与各种比较操作符一起使用,以测试文件、字符串或数字。
例如,[ $a -eq $b ] 会测试 $a 是否等于 $b。
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值