bash中的变量

1、bash中的变量:

#命令set:显示所有变量。

(1)、本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效。

  定义本地变量:[set]变量名="Value",例animal=dog

  引用本地变量:${变量名},其中{}通常省略,例echo $animal

  撤销本地变量:unset 变量名,例unset animal

(2)、局部变量:只对局部代码有效

  定义局部变量:local 变量名=变量值

(3)、环境变量:当前shell进程以及其子shell都有效。

  定义环境变量:export 变量名=变量值

(4)、位置变量:也叫参数变量

  ./first.sh 2 8

  $1,...,$n

(5)、特殊变量:

  $0:脚本名称自身。

  $?:上一次命令的执行状态。

     状态用数字0-255表示。

     0:成功

     1-255:失败。

   

2、bash中的配置文件:持久保存用户配置。

   (1)、profile类:为交互式登录用户提供配置。

    /etc/profile(全局配置)

    /etc/profile.d/*.sh(全局配置),因所有的配置信息都配置到profile里,文件会太长,

          因此某类具体的配置信息可以新建文件*.sh放置于/etc/profile.d/下

    ~/.bash_profile(个人配置)

    其功能:

        设定环境变量

        运行命令或脚本

  2)、bashrc类:为非交互式登录用户提供配置。

    /etc/bashrc(全局配置)

    ~/.bashrc(个人配置)

    其功能:

         设定本地变量

         定义命令别名

    交互式登录:直接通过终端输入用户信息登录系统。

       su - UserName或者su -l UserName

    非交互式登录:

        su UserName

        图形界面的终端。

        执行脚本


   3)、通知shell重读配置文件的命令:

        source或者.  配置文件
















本文转自lzf0530377451CTO博客,原文链接: http://blog.51cto.com/8757576/1877453,如需转载请自行联系原作者



<think>嗯,用户想了解Bash Shell变量的命名规范和最佳实践。首先,我需要回忆一下Bash变量的基本规则。变量名通常只能包含字母、数字和下划线,而且不能以数字开头。这一点我记得没错,但需要确认是否正确。比如,像var_name、VAR_NAME都是合法的,但3var就不行。然后,区分大小写这一点也很重要。Bash变量名是区分大小写的,所以$var和$Var是两个不同的变量。用户可能需要注意这一点,避免因为大小写问题导致错误。接下来是关于命名习惯。通常建议使用大写字母表示环境变量和全局变量,比如PATH、HOME。而局部变量则用小写,比如temp_var。这样可以提高代码的可读性,用户可能想知道为什么要这样区分,可能需要解释一下作用域的问题。还有下划线的使用。虽然允许使用,但最好避免使用连字符,因为连字符在变量名中是不允许的,比如var-name会报错。这里需要强调变量命名中不能使用连字符,只能使用下划线。然后是命名风格,比如全大写加下划线的常量,或者驼峰式。不过Bash中通常更常见的是全大写和下划线,比如MAX_SIZE。驼峰式可能在其他编程语言中更常见,但在Bash脚本中可能不太常用,需要说明这一点。最佳实践方面,用户可能想知道如何避免命名冲突。比如使用前缀,比如在脚本内部变量前加下划线_private_var,这样可以减少和系统变量的冲突。另外,局部变量尽量使用小写,避免污染全局环境。 引号的使用也是一个重要点。变量赋值时等号两边不能有空格,而引用变量时建议用双引号,比如"$var",这样可以正确处理带有空格的变量值。用户可能在脚本中遇到空格问题,所以这点需要强调。 还有只读变量,使用readonly声明,防止意外修改。比如readonly MAX_CONN=100,这样可以保证常量不被改变。 关于作用域,函数内部用local关键字声明局部变量,避免影响全局作用域。这有助于模块化代码,减少副作用。 导出环境变量时用export,这样变量才能被子进程继承。比如导出PATH变量,确保子shell能访问。避免使用特殊符号,比如$@、$#等,用户可能误用这些特殊变量,导致脚本行为异常。需要提醒他们不要用这些保留名称作为变量名。最后,生成相关问题,需要覆盖用户可能进一步想了解的内容,比如常见错误、环境变量设置、变量作用域、引用方式、特殊符号的影响,以及调试技巧。这些问题应该能帮助用户深入理解Bash变量使用中的各种注意事项。 需要检查是否有遗漏的点,比如变量赋值的语法是否正确,是否提到了只读变量,作用域控制等。同时,确保示例代码正确,比如函数中使用local声明变量,导出变量的例子是否正确。还要确认所有建议都符合Bash的最佳实践,没有过时或错误的信息。</think>### Bash Shell变量命名规范与最佳实践 #### 一、基础命名规范 1. **合法字符**:变量名仅允许字母、数字、下划线,且**不能以数字开头** 例如:`var_name`(合法) vs `3var`(非法)[^1] 2. **区分大小写**:`$var` 和 `$Var` 是两个不同的变量 3. **保留符号**:避免使用 `$`、`!`、`*` 等特殊字符 #### 二、命名习惯建议 ```bash # 环境变量/全局变量建议全大写 export LOG_PATH="/var/log/app.log" # 局部变量建议小写+下划线 current_user=$(whoami) ``` #### 三、最佳实践 1. **避免冲突** ```bash # 使用前缀减少冲突 _internal_var="private_data" ``` 2. **引号规范** ```bash # 带空格的变量必须用双引号 full_name="John Doe" echo "$full_name" ``` 3. **只读变量** ```bash readonly MAX_RETRY=3 ``` 4. **作用域控制** ```bash function process_data() { local tmp_file="/tmp/data.tmp" # 局部变量 # ... } ``` 5. **环境变量导出** ```bash export API_KEY="xxxx-xxxx-xxxx" ``` #### 四、常见错误示例 ```bash # 错误1:包含连字符 var-name="value" # 报错:bad substitution # 错误2:赋值带空格 var = "value" # 报错:command not found ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值