shell变量学习笔记

shell相关文件

# 查看系统支持的shell
cat /etc/shells
# 查看历史命令,每次登录注销后,会被保存在此文件中,注销前保存在内存中
cat ~/.bash_history
# 正常退出前会执行下面文件中的命令
cat ~/.bash_logout

shell命令行的编辑

ctrl+u #	删除光标之前的命令
ctrl+k #	删除光标之后的命令
ctrl+a #	光标移到命令行最前面
ctrl+e #	光标移到命令行最后面

shell的变量功能

变量的显示

echo $PATH
echo ${PATH}

变量的赋值

# 直接赋值1,不允许出现空格
myname=jiangxianqiang
# 直接赋值2,允许出现空格
myname="j x q"
# "$PATH"和'$PATH'的区别
a='$PATH'
b="$PATH"
echo ${a} --> $PATH
echo ${b} --> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# $(命令)或`命令`:可以在命令中使用其他命令,如
echo $(ls)
anaconda-ks.cfg pdump
# 取消变量
uset 变量名
# 从键盘给变量赋值
read [-pt] var
-p # 键盘输入前展示命令提示
-t # 等待键盘输入的超时时间
lread -p "please input " -t 30 myname

环境变量

变量和环境变量不是一个概念,父进程的变量子进程不能使用,父进程的环境变量子进程可以使用。

# 查看环境变量
env
export
# 普通变量转换成环境变量
export myname
env | grep myname -> myname=jiangxq

常见的环境变量

变量名描述
HOME用户的根目录
HISTSIZE历史命令最大数目
MAIL邮件相关
PATH可执行文件查找的路径
LANG语系
RANDOM0~32767之间的随机数,随机数生成器/dev/random 0~9之间随机数:declare -i number=$RANDOM/32767*10;echo $number

shell自身变量

除了临时变量和环境变量,还有bash自身变量,可以通过set或declare命令查看,用env或export看不到。下面是部分bash变量的含义

# PS1 命令行提示符,表示命令行开头显示的字符串
set | grep PS1
PS1='[\[\e[31m\]\u@\[\e[36m\]\h \w\[\e[37m\]]\[\e[33m\]\$\[\e[m\]  '
\d: 显示日期
\H: 显示完整主机名
\h: 显示简化主机名
\t \T \A \@: 显示时间
\u: 显示账号名称
\v: 显示bash的版本
\w: 显示完整工作目录
\W: 显示简化工作目录
\#: 显示执行的第几个命令
\$: 显示提示符,root为#,非root为$

# $ 表示本shell的进程号,使用echo $$来查看
echo $$
25193

# ?表示上一条命令的返回结果,成功为0,失败则显示对应的错误码
echo $?
0

变量相关命令

read

read的作用是从键盘读取数值,赋值给变量,选项参数为:

read [-pt] var
-p # 键盘输入前展示命令提示
-t # 等待键盘输入的超时时间

使用举例:

read -p "please input " -t 30 myname
-> please input aaa
echo ${myname}
-aaa

declare

declare的作用是声明不通类型的变量。参数选项为:

declare [-aixr] var #变量/数组的声明或取消声明
# 不加选项,展示所有的变量
-a # 声明数组类型变量
-i # 声明整型变量
-x # 声明环境变量或将自定义变量转换成环境变量
-r # 声明只读变量
-p # 查看变量类型
+aixr # 取消变量的类型,取消的是变量的类型,而不是变量自身

使用举例

# 数组的声明和使用
decalre -a var 		#声明
arr[1]=1;arr[2]=2 	#赋值方式1
arr=(1 2 3 4 5)		#赋值方式2
echo ${arr[1]}		#访问方式1
echo ${arr[*]}		#访问方式2

#整型变量的声明和使用
declare -i xxxx=1	#声明
xxxx=${xxxx}+1		#操作
echo $xxxx			
2

#类型的取消
declare +i xxxx
xxxx=${xxxx}+1
echo $xxxx
2+1

变量的应用

# 进入内核模块目录
cd /lib/modules/$(uname -r)/kernel

变量文件加载的顺序

login shell:完整流程登录,需要输入账号密码

non-login shell:非完整流程登录,如直接执行bash

login shell读取的配置文件的流程:

  1. 首先读取/etc/profile: 全局环境变量配置文件,export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL;并且设置了umask.调用了外部配置文件/etc/profile.d/*.sh,作用是定义bash的外观、功能等,如:

    • /etc/profile.d/lang.sh,通过调用/etc/locale.conf,实现语系配置
    • /etc/profile.d/bash_completion.sh,通过调用/usr/share/bash-completion/completions/*下的配置文件,实现命令补全
  2. 然后读取/.bash_profile或/.bash_login或~/.profile: 个人环境变量配置文件,哪个有读哪个,读到一个便结束,bash_profile做了两个事情:

    • 读取~/.bashrc文件,.bashrc又去调用/etc/bashrc配置文件
    • 将HOME/bin加入到PATH中

non-login shell读取的配置文件,仅读取~/.bashrc

shell命令识别的顺序

  1. 从alias中寻找
  2. 从bash的内置命令中寻找
  3. 通过$PATH变量的顺序寻找

shell登陆页面信息自定义

  • /etc/issue:用于自定义tty方式登录页面显示

  • /etc/issue.net:用于telnet方式登录页面显示

  • /etc/motd:message of today,用于公告今天的注意事项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是shell脚本? Shell脚本是一种编程语言,它是在Unix和Linux操作系统中使用的一种脚本语言。它可以帮助用户自动化任务,并且可以运行一系列命令。 Shell脚本通常以.sh扩展名结尾。 2. 为什么要学习shell脚本? 学习shell脚本可以帮助你自动化任务,提高工作效率。Shell脚本也可以帮助你编写小工具,方便你自己或其他人使用。Shell脚本还可以帮助你更好地理解Linux和Unix操作系统。 3. 如何编写一个简单的shell脚本? 首先,在命令行中输入命令nano test.sh,创建一个名为test.sh的文件。然后,在文件中输入以下内容: #!/bin/bash echo "Hello World" 接着,按下Ctrl + X,然后按下Y,最后按下Enter,保存并退出文件。接下来,您需要在命令行中输入以下命令: chmod +x test.sh ./test.sh 这将使test.sh文件可执行,并运行脚本。在命令行中,您应该看到输出“Hello World”。 4. shell脚本中的注释是什么? 注释是用于向脚本中添加说明和文档的文本。在Shell脚本中,注释以“#”开头。注释不会被脚本解释器执行,但可以帮助其他人更好地理解脚本。 5. 如何在shell脚本中使用变量变量是一个用于存储值的占位符。在Shell脚本中,您可以使用以下语法来定义变量: my_variable="Hello World" 您可以使用echo命令来输出变量的值: echo $my_variable 6. 如何在shell脚本中使用条件语句? 在Shell脚本中,您可以使用条件语句来执行基于条件的操作。以下是一个示例条件语句: if [ $my_variable = "Hello World" ] then echo "The variable contains Hello World" else echo "The variable does not contain Hello World" fi 7. 如何在shell脚本中使用循环? 在Shell脚本中,您可以使用for循环或while循环来执行重复的操作。以下是一个示例for循环: for i in 1 2 3 4 5 do echo $i done 以上代码将输出数字1到5。 8. 如何在shell脚本中使用函数? 在Shell脚本中,您可以使用函数来组织和重复使用代码。以下是一个示例函数: function say_hello { echo "Hello World" } 您可以通过以下方式调用函数: say_hello 9. 如何从shell脚本中读取用户输入? 在Shell脚本中,您可以使用read命令来从用户那里读取输入。以下是一个示例: echo "What is your name?" read name echo "Hello $name" 以上代码将提示用户输入他们的名字,并输出“Hello”后跟用户的名字。 10. 如何在shell脚本中使用命令行参数? 在Shell脚本中,您可以使用$1、$2、$3等变量来访问命令行参数。例如,以下是一个示例脚本,它接受两个命令行参数并将它们相加: #!/bin/bash sum=$(($1 + $2)) echo "The sum of $1 and $2 is $sum" 您可以使用以下命令来运行脚本并传递两个参数: ./test.sh 2 3 以上代码将输出“The sum of 2 and 3 is 5”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值