脚本

脚本源自戏剧舞台,类似剧本一样的东西,表演者照上面演绎出来

在编程领域也是类似,计算机照着脚本执行即可,比如下面脚本:

cd ~/Desktop
mkdir demo
cd demo
mkdir js css
touch js/mian.js css/style.css
exit

写一个简单的脚本

  1. 创建一个 local 目录,一般来说脚本的后缀是 .sh,但是在 linux 下,后缀没有任何意义,只是给人看的
  mkdir ~/local
  cd ~/local
  touch demo
  1. 编辑 demo
  mkdir demo
  cd demo
  mkdir js css
  touch js/mian.js css/style.css
  exit
  1. 为刚刚创建的文件增加可执行权限chmod +x demo
  2. 在任意位置执行,即可看到新建出来的文件
  cd ~/Desktop
  sh ~/local/demo
  1. 把 ~/local 添加到 PATH 里
  cd ~/loca;pwd 得到 local 的绝对路径
  touch ~/.bashrc
  vim ~/.bashrc
  在最后后面添加一行字:export PATH="local的绝对路径:$PATH"
  source ~/.bashrc
  之前要运行 sh ~/local/demo  现在只需运行 demo

参数

把上面的写的脚本中的 demo 改成 $1,$1表示传的第一个参数

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

判断目录是否存

  if [ -d $1 ]; then
    echo 'error: dir exists'
    exit 1
  else
    mkdir $1
    cd $1
    mkdir css js
    touch index.html css/style.css js/main.js
    echo 'success'
    exit 0
  fi

exit 0 表示没有错误
exit 1 表示错误代码为 1
demo && echo '结束'
只有在demo成功时,才会执行echo '结束'

用 JS 脚本重写 demo

 var fs = require('fs')

 //执行时 node jsdemo xxx,这个 xxx 就是传的第2个参数
 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)

shebang

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


uccs
756 声望88 粉丝

3年 gis 开发,wx:ttxbg210604