细节
shebang 是什么及其作用
参数是什么
if...else... 是什么
返回值是什么
需要记忆的点
-
echo "hi" > index.html
//将文本写入文件 -
sh ~/local/demo.txt
// 用shell工具 运行local目录下的demo脚本(后缀名不影响,只是方便人类观看) -
chmod +x demo.sh
//给文件加上执行权限。 给文件添加权限的时候,可以不必进入该路径下,在别的路径同样可以操作,只需要对应的路径及文件名称正确即可。


理解脚本
如果你打开一本 JavaScript 教程,那么很可能在第一章就看到这句话:
JavaScript 是一门
动态类型
、面向对象
的脚本语言
。
shebang 的作用
Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"(还有其他一些名称,不过一般就用这两个)。我们可以理解为其主要为了指定当前脚本的执行环境。
- 如果脚本文件中没有
#!
这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。- 如果
#!
之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。- 如果
#!
指定的解释程序没有可执行权限,则会报错 "bad interpreter: Permission denied"。
如果#!
指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。- 如果
#!
指定的解释程序不存在,那么会报错 "bad interpreter: No such file or directory" 。注意:#!
之后的解释程序,需要写其绝对路径(如:#!/bin/bash
),它是不会自动到$PATH中寻找解释器的。- 当然,如果你使用"bash test.sh"这样的命令来执行脚本,那么
#!
这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。
例如:test.sh
Shell
#!/bin/bash
echo "hello, world."
echo "hello, ${1}."
chmod a+x test.sh
./test.sh Jay (运行之时,其实是 /bin/bash ./test.sh Jay)
结果为:
hello, world.
hello, Jay.
写一个脚本
新手注意,不要混淆 ~/Desktop/local 和 ~/local
很多同学出错都是因为明明把文件创建在 ~/Desktop/local 却跑去 ~/local 里面执行脚本,
如果你不清楚自己在什么目录,就用 pwd 命令看一下,切记!
- 找个地方新建文件,后缀随意,一般来说脚本的后缀是 .sh。我习惯把脚本放在 ~/local 目录里。(我知道你没有这个目录,创建一下这个目录就行啦)
mkdir ~/local
cd ~/local # 请一定要运行这句话!如果不运行,那么下面所有步骤都会出错
touch demo.sh
- 用vim 打开并编辑 demo.sh,内容如下:
注意:脚本执行动作,都是在当前终端(iterm)停留的位置操作,所以如果你的脚本里面没有切换目录这种操作,那么脚本执行的结构都会出现在你当前停留的目录里!!!
pwd # 确认一下当前路径是不是 ~/local 或者 /c/Users/你的名字/local
mkdir demo
cd demo
mkdir css js
touch index.html css/style.css js/main.js
echo "hi" > index.html
exit # 这里写不写都会退出,建议写,视觉上看着习惯,要有良好的代码体验。


最后用tree命令看一下分支状况


进入node node
//然后发现有>
号在左边,就表明你进入了node模式
退出node process.exit()
//发现左边>
消失,就表明你退出了node模式
网友评论