Shell 入门

编写

编写shell脚本的时候,最前面要加上一行:#!/bin/bash,因为linux里面不仅仅只有bash一个解析器,还有其它的,它们之间的语法会有一些不同,所以最好加上这一句话,告诉系统要用这个解析器。

变量赋值的时候不用带“$”,而使用或者输出的时候要带“$”。加减乘除的时候要加两层小括号。括号外面要有一个“$”,括号里面的变量可以不用“$”。需要注意的是,变量赋值,变量使用的时候不能有空格,否则会被解析成命令,报错无此命令。

基本命令参考1 参考2

$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

 shell测试判断:test或[]

使用[]的时候必须要每个变量之间都要有空格,和左右中括号也要有空格,否则报错。

-f文件 -d文件夹 -r读权限 -w写权限 -x执行权限

test -f $filename && echo "the file is ordinary file" || echo "the file is not ordinary file"

[ -f $filename ] && echo "the file is ordinary file" || echo "the file is not ordinary file"                

shell条件分支结构语句

if 条件 ; then 
结果 
elif 条件 ; then
结果
else
结果
fi 

最后面一定要有fi,在shell脚本里面,控制分支结构结束都要和开头的单词相反,例如,if <–> fi,case <–> esac

echo "Please input a filename"
read filename
if [ -f $filename ];then
echo "this file is a ordinary file."
fi

执行

1. sh shellName.sh 

2. ./shellName.sh 需要文件有被执行权限

#!/bin/bash

str="a b c d e f g h i j"

echo "the source string is "${str} #源字符串
echo "the string length is "${#str} #字符串长度
echo "the 6th to last string is "${str:5} #截取从第五个后面开始到最后的字符
echo "the 6th to 8th string is "${str:5:2} #截取从第五个后面开始的2个字符
echo "after delete shortest string of start is "${str#a*f} #从开头删除a到f的字符
echo "after delete widest string of start is "${str##a*} #从开头删除a以后的字符
echo "after delete shortest string of end is "${str%f*j} #从结尾删除f到j的字符
echo "after delete widest string of end is "${str%%*j} #从结尾删除j前面的所有字符包括j

Shell 遍历文件夹下所有文件

命令行:

        find $PWD |xargs ls -ld 递归列出当前目录下的所有文件的绝对路径包括隐藏文件

自定义函数:

function getdir(){
     echo $1
     for file in $1/*
     do
     if test -f $file
     then
          echo $file
          arr=(${arr[*]} $file)
     else
          getdir $file
     fi
     done
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值