| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 MFwxy 于 2020-12-1 23:42 编辑  
 
来源: 
《Linux Shell 自动化运维(慕课版)》千锋教育高教产品研发部(中国工信出版集团   人民邮电出版社)——知识点 
《shell脚本实战(第二版)》戴夫·泰勒,布兰登·佩里;门佳(译)(中国工信出版集团   人民邮电出版社)——代码 
 
变量种类: 
        1. 环境变量 
         定义 —— export back_dir = /home/backup;        export back_dir(转换自定义变量为环境变量) 
         使用 —— $变量名   or   ${变量名} 
        2. 自定义变量 
         定义 —— 变量名 = 变量值 
         使用 —— $变量名 
         3. 位置变量 
         脚本后面的参数就是(a,b,c...) 
         ./test.sh a b c... 
         //大于10——${10} 
        4. 预定义变量 
         $0                脚本名 
         $*                所有的参数 
         $@                所有的参数 
         $#                参数的个数 
         $$                当前进程的PID 
          $!                上个后台进程的PID 
          $?                上个命令的返回值,0表示成功 
 
赋值方式: 
        1. 直接赋值 
         a=3 
        2. 键盘输入赋值 
         read -p [提示]:[变量名] 
        3. 命令行参数赋值 
         ./name.sh $1 $2 
        4. 命令输出结果赋值 
         cmd=`date + %F` 
 
touch: 
        touch stu{1..4} && ls  -->利用{ }有序序列批量创建文件 
        stu1,sut2...stu4 
        https://www.cnblogs.com/MineGi/p/12171457.html 
        https://www.cnblogs.com/MineGi/p/11124223.html 
 
ls(英文全拼:list files): 
        查看当前文件夹文件列表 
         ls [-alrtAFR] [name...] 
 
            -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) 
            -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 
            -r 将文件以相反次序显示(原定依英文字母次序) 
            -t 将文件依建立时间之先后次序列出 
            -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) 
            -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" 
            -R 若目录下有文件,则以下之文件亦皆依序列出 
 
mkdir(英文全拼:make directory): 
        创建目录 
        mkdir [-p] dirName 
        -p 确保目录名称存在,不存在的就建一个。 
 
运算: 
        1. expr 
         num1=10 && num2=20 
         expr $num1 + $num2 
         30 
        2. (())    or     $(()) 
         sum=$(($num1 + $num2)) 
        3. []     or     $[] 
         sum=$[$num1 + $num2] 
        4. let        (低效) 
         sum=2 
         let sum=sum+8                     //没let不会进行运算。 
        5. bc小数计算 
         "2*4"        |bc 
 
删除(都会删掉找到并比较的关键字符): 
        1. {变量名#关键字符} 
         变量内容从头开始,删除到第一个符合关键字符的字符为止 
        2. {变量名##关键字符} 
         变量内容从头开始,删除到最后一个符合关键字符的字符为止 
        3. {变量名%关键字符} 
         变量内容从尾开始,删除到第一个符合关键字符的字符为止 
        4. {变量名%%关键字符} 
         变量内容从尾开始,删除到最后一个符合关键字符的字符为止 
 
替换: 
        1. ${变量名/旧字符串/新字符串} 
         变量内容里符合旧字符串的第一个“旧字符串”会被新字符串替代 
        2. ${变量名//旧字符串/新字符串} 
         变量内容里符合旧字符串的全部“旧字符串”会被新字符串替代 
 
迭代: 
        ${变量名-新的变量值} 
        如果变量名没有被赋值,那么使用新的变量值;若赋值了(包括空),则不代替。 
 
自增跟 C\C++ 一样 
 
符号: 
          # —— 注释行 
          ; —— 命令分隔符。用于同一行两命令。(;;用于终止case) 
          . —— 等价于source命令,bash内建命令。也可用于文件名开头,将文件制成隐藏文件,ls也不会正常显示 
          : —— 等价于true 
          $ —— 变量替换或引用变量内容 
          () —— 子Shell中执行 
          (()) —— 数值比较,运算,支持正则。(( i=1;i<3;i++)) , ((command1 && command2)) 
          $() —— 命令替换,如=>`command` 
          $(()) —— 支持运算,$(( 1+2 )) 
          {} —— 集合,可将命令与字符串隔开,{Num}% 
          ${} —— 变量的引用 
          [] —— 文件测试,数值比较,文件比较,字符串比较,如[ -a ] 且,[ -o ] 或 
          [[]] —— 增加了对正则的支持,如[[ =~ ]]包含,[[ || ]] 或, [[ && ]]且 
          $[] —— 支持变量运算,如$[ 2**2 ]=>2^2 => $ [ var1**var2 ] 
          # ./01.sh —— 需要执行权限,在子Shell中执行 
          # bash sh —— 不需要执行权限,在子Shell中执行 
          # .01.sh —— 不需要执行权限,在当前Shell中执行 
          # source 01.sh —— 不需要执行权限,在当前Shell中执行 
          # sh -n 02.sh —— 仅调试 syntax error 
          sh -vx 02.sh —— 以调试方法执行,查询整个执行过程 
         我们通常会修改系统中的配置文件(eg: /etc/profile)的PATH等变量,使之在当前Shell中生效 
 
chmod(英文全拼:change mode): 
        https://www.runoob.com/linux/linux-comm-chmod.html 
        chmod [-cfvR] [--help] [--version] mode file... 
 
 
 
-------------------------------------end--------------------------------------------- 
不写那么详细了。。。像个沙比,我又不会看,写个索引的了。重点在手打代码和翻看熟悉知识点上。 
 
 
 
先弃坑,这玩意儿在一定程度上影响我学习了。以后有机会再来吧。 |   
 
 
 
 |