脚本

作者: squall1744 | 来源:发表于2018-03-11 21:48 被阅读0次

Bash脚本


创建一个脚本

  1. 随便找个地方建立个文件, 假设在~/local里吧

    1. mkdir ~/local
    2. cd ~/local
    3. touch demo
  2. 编辑demo

mkdir test
cd test
mkdir css js
touch index.html css/style.css js/main.js
exit
  1. 给demo添加执行权限chmod +x demo

  2. 任意位置执行sh ~/local/demo即可运行脚本

  3. 在PATH中添加~/local

    1. cd ~/local
    2. pwd得到绝对路径
    3. 创建~/.bashrc文件并且在里面添加一行export PATH="local的绝对路径:$PATH"
    4. source ~/.bashrc 每次设置完了需要source一下才能生效
  4. 这时候直接输入demo就会运行脚本了, 不需要再输入sh ~/local/demo


PATH作用

我们echo $PATH一下, 会发现, PATH是保存命令文件的路径

路径用:隔开

PATH
Linux命令是文件

首先我们要明确一点, 命令实际是一个文件, 当我们运行一个命令时, 比如ls, 系统会一次在这些路径中找是否有ls这个文件, 直到找到为止, 找不到就提示没有这个命令,这里介绍几个跟环境变量相关的命令命令
echo $PATH查看$PATH路径
chmod -X 文件名给文件添加X权限
pwd显示当前路径
type 命令显示命令路径
which 命令显示命令的类型
我们可以用type ls看看我们ls文件在系统的那里存着


参数

我们可以给脚本传参, 假设我们创建了一个demo脚本

mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
exit

$1就表示我们运行脚本时候传进去的第一个参数
为什么会知道呢
Google 出来的 http://lmgtfy.com/?q=bash+first+param
用百度也行 http://www.baidu-x.com/?q=bash+%E7%AC%AC%E4%B8%80%E4%B8%AA+%E5%8F%82%E6%95%B0


判断目录是否存在

if [ -d $1 ]; then
  echo '$1 has exist'
  exit
else
  mkdir $1
  cd $1
  mkdir css js
  touch index.html css/style.css js/main.js
  exit
fi

这里面比较难理解, 先说一下[-d $1]的意思
-d $1 表示文件$1

bash的判断通过下面的语法

if[]; then
  ...
else
  ...
fi

我们怎么会知道-d $1可以判断目录是否存在?
Google出来的 http://lmgtfy.com/?q=bash+dir+exists


返回值

exit 0表示没有错误
exit 1表示错误代码为 1

demo && echo '结束'

只有在 demo 成功时,才会执行echo '结束'


Node.js 写脚本


  1. 创建 ~/local/jsdemo.js,内容如下
 var fs = require('fs')

 var dirName = process.argv[2] // 你传的参数是从第 2 个开始的

 fs.mkdirSync("./" + dirName) // mkdir $1
 process.chdir("./" + dirName) // cd $1
 fs.mkdirSync('css') // mkdir css
 fs.mkdirSync('js') // mkdir js

 fs.writeFileSync("./index.html", "")
 fs.writeFileSync("css/style.css", "")
 fs.writeFileSync("./js/main.js", "")

 process.exit(0)
  1. 给 jsdemo.js 加上执行权限chmod +x ~/local/jsdemo.js

  2. node ~/local/jsdemo.js zzz,就可以看到 zzz 目录创建成功了

  3. shebang
    我们每次执行 ~/local/jsdemo.js 都要用 node 来执行,能不能做到不加 node 也能执行呢(也就是指定执行环境),可以,在 jsdemo.js 第一行加上这一句即可:

    #!/usr/bin/env node
    

    然后你就可以直接用 ~/local/jsdemo.js zzz 了(省得输入 node 了)。
    如果你已经把 ~/local 加入了 PATH,那么甚至可以直接输入 jsdemo.js zzz 来执行。
    如果你再把 jsdemo.js 的后缀 .js 去掉,就可以直接 jsdemo zzz 了。

相关文章

  • 自瞄3.15

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.15【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 自瞄3.16

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.16【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 为什么会有人说引流脚本不靠谱?原来是还没了解透彻引流脚本

    引流脚本,什么是引流脚本?引流脚本怎么样?引流脚本好用吗?引流脚本靠谱吗?引流脚本是骗局吗?引流脚本效果好吗?引流...

  • Kettle11:Kettle脚本控件

    本章讲解以下三种脚本的案例01 javascript脚本02 java脚本03 执行SQL脚本 脚本 1.脚本是转...

  • 进程守护脚本

    进程守护脚本 新建脚本 编辑脚本 添加可执行权限 启动脚本

  • DoTween

    /* 项目: 脚本:校园导航管理脚本 脚本:此脚本挂载在SchoolMenuPanel上 脚本:点击二级导航按钮,...

  • UI Recorder之Android自动化

    简单介绍 之前已经进行了Web的脚本录制,脚本回放,及脚本运行。这次进行Android端脚本录制、脚本回放,及脚本...

  • 宝塔Linux面板命令大全

    【安装宝塔】centos安装脚本 Ubuntu/Deepin安装脚本: Debian安装脚本 Fedora安装脚本...

  • 透视3.16

    【脚本开关→】开【←脚本开关】 【脚本关闭公告→】服务器更换..【←脚本关闭公告】

  • 宝塔常用命令

    安装宝塔 Centos安装脚本 Ubuntu/Deepin安装脚本 Debian安装脚本 Fedora安装脚本 管...

网友评论

      本文标题:脚本

      本文链接:https://www.haomeiwen.com/subject/fzewfftx.html