shell脚本 变量

本文介绍了Shell脚本的基础知识,包括脚本的基本结构、变量的使用、读取用户输入及文件内容,以及变量类型和声明。通过示例展示了如何进行文件操作、变量赋值、错误检查等,帮助读者快速掌握Shell脚本编写技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本的基本写法

#!  指定解释器 

#! /bin/bash
#脚本的基本信息的描述
#Name: 名称
#Desc: 描述
#Path: 存放路径
#Usage: 用法
#Update: 更新时间

echo "hello godv"
echo "hello godv"
echo "hello godv"

查看脚本执行过程    bash -x godv.sh 

godv@godv-OptiPlex-7070:~/godv/godv_shell$ bash -x godv.sh 
+ echo 'hello godv'
hello godv
+ echo 'hello godv'
hello godv
+ echo 'hello godv'
hello godv

查看脚本语法问题  bash -n godv.sh


试炼

#! /bin/bash
echo "godv::start"
#删除
rm -rf /home/godv/godv/godv_shell/shell_test/*      
#创建文件夹
mkdir /home/godv/godv/godv_shell/shell_test/dir{1..3}
#拷贝
cp -r /home/godv/Downloads /tmp/dir1
#打印时间
echo "$(date +'%F %T') godv::success "

变量    变量名=变量值    取消变量unset A 

  变量名区分大小写(建议大写)

  变量名不能包含特殊符号

  空格字符串 A="hello godv"

  变量名不能以数字开头

  等号两边不能有空格

godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ A=godv
godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ echo $A
godv
godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ A=woda
godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ echo ${A}
woda
godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ unset A
godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ echo $A


 echo ${A:1:3}   在A变量中 从第1位开始截取3位

godv@godv-OptiPlex-7070:~/godv/godv_shell/shell_test/dir1$ echo ${A:1:3}
234

 


  赋值 

godv@godv-OptiPlex-7070:~$ A=$(hostname)
godv@godv-OptiPlex-7070:~$ echo $A
godv-OptiPlex-7070

read  [选项]  变量名   

  -p 定义提示用户信息

  -s 密码

  -t 显示输入时间

  -n 限制长度

godv@godv-OptiPlex-7070:~$ read name
godv
godv@godv-OptiPlex-7070:~$ echo $name
godv
godv@godv-OptiPlex-7070:~$ read -p name
name
godv@godv-OptiPlex-7070:~$ read -p "input you name:" name
input you name:name
godv@godv-OptiPlex-7070:~$ echo $name
name
godv@godv-OptiPlex-7070:~$ read -s -p "input you password:" pass
input you password:godv@godv-OptiPlex-7070:~$ echo $pass
123456
godv@godv-OptiPlex-7070:~$ read -n 5 -p  "name:" name
name:hhhhhgodv@godv-OptiPlex-7070:~$ echo $name
hhhhh
godv@godv-OptiPlex-7070:~$ read -t 3 -p "3s" name
3sgodv@godv-OptiPlex-7070:~$ 

变量值来自文件

godv@godv-OptiPlex-7070:~$ read -p "input you ip address:" ip < ip.txt 
godv@godv-OptiPlex-7070:~$ echo $ip
192.168.97.45

有类型的变量

declare [选项]  变量名=变量值

  -i  整数

  -r  只读/不可修改

  -a  定义/查看 数组

  -A  定义/查看 关联数组

  -x  将变量通过环境导出

godv@godv-OptiPlex-7070:~$ declare -i B=456
godv@godv-OptiPlex-7070:~$ echo $B
456
godv@godv-OptiPlex-7070:~$ B=godv
godv@godv-OptiPlex-7070:~$ echo $B
0
godv@godv-OptiPlex-7070:~$ declare -r C=godv
godv@godv-OptiPlex-7070:~$ echo $C
godv
godv@godv-OptiPlex-7070:~$ C=goda
bash: C: 只读变量
godv@godv-OptiPlex-7070:~$ unset B
godv@godv-OptiPlex-7070:~$ unset C
bash: unset: C: 无法取消设定: 只读 variable

godv@godv-OptiPlex-7070:~$ AAA=godv
godv@godv-OptiPlex-7070:~$ export AAA
godv@godv-OptiPlex-7070:~$ env | grep "AAA"
AAA=godv
godv@godv-OptiPlex-7070:~$ declare -x BBB=goda
godv@godv-OptiPlex-7070:~$ env | grep "BBB"
BBB=goda

本地变量:用户自定义的变量  当前进程有效 / 子进程无效

环境变量 /etc/profile:                               当前进程有效 / 子进程有效

env  查看当前用户的 环境变量
set  查看当前用户的 所有变量(临时/环境)
declare -x BBB=goda  定义环境变量
export AAA=godv  定义环境变量

全局变量:所有进程 / 所有用户  在下列文件被修改后都需要重新 source 使其生效

当前用户
$HOME/.bashrc  当前用户的bash信息,用户登录时读取  定义别名、umask、函数
$HOME/.bash_profile  当前用户的环境变量,用户登录时读取
$HOME/.bash_logout  当前用户退出当前shell时最后读取  定义用户退出时执行的程序
全局
/etc/bashrc  全局的bash信息,所有用户生效  定义别名、umask、函数
/etc/profile  全局环境变量信息,系统和所有用户生效

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值