如何一个响指删除计算机里的一半文件?(二)
如何一个响指删除计算机里的一半文件?
我们接着上文来讲:Shell变量
声明变量
variable="Hello"
注意,在 Shell 里声明变量,等号的两边不能有空格,否则 Shell 会错把你的变量名当作某个命令,变量名需遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
使用变量
在变量名前面加美元符号可以使用该变量:
#!/bin/sh
MY_MESSAGE="Hello World"
echo$MY_MESSAGE
有的时候我们需要在美元符号和变量中间添加一个花括号来区分变量名和其他内容之间的边界:
#!/bin/sh
skill="Java"
echo"I am good at ${skill}Script"
交互式声明变量
看下面这个例子:
#!/bin/sh
echoWhat is your name?
read MY_NAME
echo"Hello $MY_NAME- hope you're well."
echo
用来输出字符串。执行上面这段程序时,会先输出 What is your name?
,之后第三行程序等待用户输入内容,把内容存储在 MY_NAME
变量当中,最后一行在字符串中
变量作用域
在一个脚本里,如果你还没有声明某个变量,就调用了它,Shell 不会给你一个报错,它会返回一个空字符串作为结果:
#!/bin/sh
# File name: myvar2.sh
echo"MYVAR is: $MYVAR"
MYVAR="hi there"
echo"MYVAR is: $MYVAR"
在终端执行上面脚本的结果如下:
$ ./myvar2.sh
MYVAR is:
MYVAR is: hi there
在终端里试试下面的例子:
$ MYVAR=hello
$ ./myvar2.sh
MYVAR is:
MYVAR is: hi there
我们先在终端设置了一个变量 MYVAR,然后通过该界面执行 myvar2.sh 文件,结果该文件并没有继承这个变量。实际上当我们运行 myvar2.sh 时,会生成一个新的 shell 执行该文件,此时两个运行环境是分离的,只有 Shell 当中的环境变量才能被继承,而终端里的 MYVAR 此时只是另一个局部变量而已。