目录
一、执行shell脚本两种方式
作为可执行程序
chmod +x ./test.sh #chmod +x 使脚本具有执行权限
./test.sh #执行脚本
作为解释器参数
sh test.sh
二、shell 变量
1、变量的定义、修改、使用、删除、只读变量
-
如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号;
-
如果 value 包含了空白符,那么就必须使用引号包围起来。
-
注意,赋值号
=的周围不能有空格 -
变量名外面的
{ }是可选的 -
单引号
' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。 -
以双引号
" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。 -
变量被删除后不能再次使用;unset 命令不能删除只读变量
url=http://c.biancheng.net/shell/
url1='http://c.biancheng.net/shell/'
url2="http://c.biancheng.net/shell/"
#使用变量的两种方式
echo $url
echo ${url}
#修改变量
url="http_changed"
#单引号和双引号的区别
website1='C语言中文网:${url}'
website2="C语言中文网:${url}"
echo $website1 // C语言中文网:${url}
echo $website2 // C语言中文网:http://c.biancheng.net
#删除变量,unset 命令不能删除只读变量
unset url
#只读变量
readonly url_3=123
2、命令的结果赋值给变量
#!/bin/bash
#命令的结果赋值给变量
#variable=`command`
#variable=$(command)
path=$(ls /home/sxp)
echo $path
3、传递参数
- 脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
- $# :传递到脚本的参数个数
- $* :以一个单字符串显示所有向脚本传递的参数。
- $$ :脚本运行的当前进程ID号
- $! :后台运行的最后一个进程的ID号
- $@ :与$*相同,但是使用时加引号,并在引号中返回每个参数。
- $- :显示Shell使用的当前选项,与set命令功能相同
- $?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
touch test.sh
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
#输出结果为
#[sxp@localhost study]$ ./test.sh 1 2 3
#Shell 传递参数实例!
#执行的文件名:./test.sh
#第一个参数为:1
#第二个参数为:2
#第三个参数为:3
# "-- \$* 演示 ---"
for i in "$*"; do
echo $i
done
# "-- \$@ 演示 ---"
for i in "$@"; do
echo $i
done
#结果为
#-- $* 演示 ---
#1 2 3
#-- $@ 演示 ---
#1
#2
#3
4、设置环境变量
#设置变量为环境变量
#export 变量名=变量值
#让修改后的配置立即生效
#source 配置文件
#echo $变量名
vim /etc/profile
TOMCAT_HOME=/opt/tomcat
source /etc/profile
echo $TOMCAT_HOME
本文介绍了Shell脚本的两种执行方式以及详细讲解了变量的定义、修改、使用和删除,包括如何设置只读变量。此外,还讨论了如何将命令结果赋值给变量以及如何处理传递给脚本的参数。特别地,提到了$*和$@在处理参数时的区别,以及如何设置环境变量。

1万+

被折叠的 条评论
为什么被折叠?



