shell脚本之定义变量

有一些关于shell变量名的规则:

  1. 变量名可由字母数字字符(字母和数字)和下划线字符组成。

  2. 变量名的第一个字符必须是一个字母或一个下划线。

  3. 变量名中不允许出现空格和标点符号。

注意在赋值过程中,变量名,等号和变量值之间必须没有空格。那么,这些值由什么组成呢? 可以展开成字符串的任意值:

a=z                     # Assign the string "z" to variable a.
b="a string"            # Embedded spaces must be within quotes.
c="a string and $b"     # Other expansions such as variables can be
                        # expanded into the assignment.

d=$(ls -l foo.txt)      # Results of a command.若是在上层目录需要d=$(ls -l ../foo.txt)

e=$((5 * 7))            # Arithmetic expansion.

字符串变量

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了,哈哈),字符串可以用单引号,也可以用双引号,也可以不用引号。

单引号

str='this is a string'

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)

双引号

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"
  • 双引号里可以有变量
  • 双引号里可以出现转义字符

字符串操作

拼接字符串
your_name="qinjx"
greeting="hello, "$your_name" !"   //输出hello,qinjx
greeting_1="hello, ${your_name} !"   //输出hello,qinjx
greeting_1="hello, "${your_name}" !"  //输出hello,qinjx
greeting_1="hello, \"${your_name}\" !"  //输出hello,"qinjx"
获取字符串长度:
string="abcd"
echo ${#string} #输出:4  //字符串前面加#,输出字符串长度
提取子字符串
string="alibaba is a great company"
echo ${string:1:4} #输出:liba
查找子字符串
string="alibaba is a great company"
echo `expr index "$string" is`#输出:8,这个语句的意思是:找出单词is在这名话中的位置。小撇是在~下面那个。


### Python 中下划线变量的使用规则、意义及场景 #### 单前置下划线 `_variable` 单前置下划线通常用于模块级别或类成员中,作为一种约定俗成的方式表明该属性或方法是受保护的,不建议外部直接访问。然而,这只是程序员之间的默契,并不会阻止实际访问[^1]。 ```python class Test: _protected_var = "This is a protected variable" def __init__(self): self._another_protected_method() def _another_protected_method(self): print("Protected method called") ``` #### 双前置下划线 `__variable` 当一个名字以前置双下划线开始时,Python 解释器会对这个名字进行重命名处理,即所谓的“名称改编”,目的是防止派生类意外覆盖基类中的同名成员。具体来说,`__spam` 形式的标识符会被替换为 `_classname__spam` 的形式,在大多数情况下还会加上一个额外的后缀下划线[^4]。 ```python class BaseClass: __private_var = "Base Class Private Variable" def get_private(self): return self.__private_var # 实际上变成了 _BaseClass__private_var class DerivedClass(BaseClass): __private_var = "Derived Class Private Variable" # 不会覆盖父类的私有变量 print(DerivedClass().get_private()) # 输出: Base Class Private Variable, 表明子类并未覆盖掉父类的私有字段 ``` #### 后置单下划线 `var_name_` 为了遵循 PEP8 编码风格指南,如果希望使用的变量名恰好是一个保留关键字,则可以在其后面加一个下划线以避免语法错误并保持代码清晰度[^3]。 ```python class_ = ["Math", "Physics"] # 避免与内置 'class' 关键字冲突 for item in class_: print(item) ``` #### 连续多个下划线 `____` 虽然可以创建连续多于两个以上的下划线作为变量名的一部分,但这并不常见也不推荐这样做,因为这可能会引起混淆并且不符合社区编码习惯。一般只会在某些特殊场合见到像 `__main__` 或者其他类似的魔法方法/属性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值