首页
学习
活动
专区
圈层
工具
发布

Bash中$$ $! $# $0 $? $* $@ 等各种符号的含义

问: 在 Bash 中,似乎有几个变量持有特殊的、具有一致含义的值。 例如: ./myprogram &; echo $! 将返回 myprogram 后台进程的 PID。我还知道其他的,比如 $?..., 还有其他的吗? 答: $$ 扩展为shell的进程ID。在子shell中,它扩展为调用shell的进程ID,而不是子shell的。 $!...$1 表示第 1 个位置参数, $- 扩展为调用时由内置 set 命令指定的当前选项标志,或shell本身设置的选项标志(如 -i 选项)。 $0 扩展为shell或shell脚本的名称。...这是在shell初始化时设置的。如果使用命令文件调用Bash,则将 $0 设置为该文件的名称。如果Bash是用 -c 选项启动的,那么 $? 扩展为最近执行的前台管道的退出状态(退出码)。...Bash中单引号和双引号的区别 在bash中:-(冒号破折号)的用法

1.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    shell脚本中$#、$*、$@、$?、$0等含义一文搞懂

    一、Shell脚本变量的含义 1、$#:表示执行脚本传入参数的个数 2、*:表示执行脚本传入参数的列表(不包括0) 3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前...:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号) 5、@:表示执行脚本传入参数的所有个数(不包括0) 6、$0:表示执行的脚本名称 7、$1:表示第一个参数 8、...:表示脚本执行的状态,0表示正常,其他表示错误 二 $ *和 $@的差异 在shell中,KaTeX parse error: Can't use function '' in math mode at.../bin/sh MY_SHELL_PATH=`dirname $0` echo "print shell script location:" echo ${MY_SHELL_PATH} echo...===============================" echo "enter shell script location:${MY_SHELL_PATH}" cd `dirname $0`

    20.2K30

    理解 C++ 中 ~0x1f 的含义与应用

    在 C++ 编程语言中,表达式 ~0x1f 涉及到位运算的概念,这种写法简洁却非常具有深意。本文将深入剖析这个表达式的含义,从位运算的基础知识出发,逐步扩展到其可能的实际应用场景。...(32 位系统中)在具体数值上,~0x1f 等价于取 0x1f 的补码,结果依赖于机器的整数长度:在 32 位系统中:~0x1f = 0xFFFFFFE0在 64 位系统中:~0x1f = 0xFFFFFFFFFFFFFFE0...value: 96在这个例子中,~0x1f 对应的掩码是 0xFFFFFFE0,它可以保留 value 的高位数据而将低 5 位清零。...对齐计算在内存分配或地址对齐操作中,~0x1f 常被用来快速计算满足对齐条件的地址。...二进制补码表示在计算机中,整数通常使用补码表示法。在补码表示下:~x = -(x + 1)因此,理解 ~0x1f 的含义必须结合补码规则。2.

    63400

    2022-01-08:数组中只有0和1,每过1代,0旁边只有1个1,当前0

    2022-01-08:数组中只有0和1,每过1代,0旁边只有1个1,当前0会变成1。每过1代,0旁边有2个1,当前0还是0。 比如10001,经过1代,会变成11011,再过1代,还是11011 。...求一个数组经过M代以后的数组。函数定义是void f(int[] arr,int m) 。 答案2022-01-08: x里有有限个0。 1x1,中间0,x中有2m个0变成1,最中间的0不会变成1。...1x,右0,x中有m个0变成1。 x1,左0,x中有m个0变成1。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。...代码如下: package main import "fmt" func main() { arr := []byte{0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0}...i := left; i <= right; i++ { arr[i] = 1 } } } 执行结果如下: [图片] *** 题目来自左神,代码是自己写的。

    47210

    MySQL中的和0

    《MySQL的隐式转换导致诡异现象的案例一则》文章中原始有段写的是, 上述例子中 "测试a" 会截成 "",因此 a=0 ,才会返回字段不为空的。 有朋友留言说,这个确定正确吗?"...测试a"应该转成0吧,而不是""? 我认为这块写得有些模糊了,但是结论没错。...因为数据类型的问题,"测试a"会转成数值类型,MySQL自动截断,应该截成的是""(空),只是说""和0是相等的,通过CAST可以验证下,"测试a"和''(空)转换成数值类型都是0, select cast...('测试a' AS UNSIGNED), CAST('' AS UNSIGNED); 如果准确些,应该说的是"测试a"自动截成""(空),""和0是相等的,因此得到"a=0"。...近期更新的文章: 《MySQL的隐式转换导致诡异现象的案例一则》 《MySQL中用到了索引还很慢的一个SQL场景》 《什么是"金砖国家"?》

    47210

    数组未必一定需从0开始,谈一下非0开始的数组

    谈到数组时,当被问及数组是从什么数开始时,估计大部分程序员都会直接说出数组当然是从0开始的。这个回答当然没有错,现在我们就来了解一下C#中的下限非0的数组。  ...首先看一下数组的相关介绍:       1.数组:是允许将多个数据项当作一个集合来处理的机制。       2.数组的分类:在CLR中,数组可分为一维数组,多维数组,交错数组。      ...在创建数组时,除了有数组元素,数组对象占据的内存块还包含一个类型对象指针,一个同步索引块和一个额外的成员。...上面对数组的分类中提到“交错数组”,由于CLR支持交错数组,所以在C#中可以实现交错数组,交错数组即由数组构成的数组,在访问交错数组的元素意味着必须进行两次或多次数组访问。  ...在对数组进行相关操作的过程中,数组作为实参传给一个方法时,实际传递的是对该数组的引用,因此被调用的方法能够修改数组中的元素。(如果不想被修改,必须生成数组的一个拷贝,并将这个拷贝传给方法。)

    1.3K50

    为什么数组的下标从 0 开始?

    首先,我们来复习下数组的定义 数组是一组连续内存空间存储的具有相同类型的数据,整个排列像一条线一样,是一种线性表数据结构。 ? 那么,问题来了,数组的下标为什么要从 0 开始?从 1 开始行不行?...公式: Tom哥[n] = base_address + n * data_size base_address,表示数组的首地址 n,表示偏移量 data_size,表示数组类型的字节数 ① 读取上面数组的...【0】位置的 `微` ② 读取上面数组的 【9999】位置的 `注` 由于基于计算的内存地址读取数据,上面两种情况的耗费的时间是一样,时间复杂度为 O(1) 注意:想要使用随机访问,一定要满足两个条件...: 1、连续的内存空间 2、相同类型的数据 知识补充: 与随机访问对应的是顺序访问 顺序访问:链表在内存中不是按顺序存放的,而是通过指针连在一起,访问某一元素,必须从链头开始顺着指针才能找到某一个元素...我们读取 下标为n 的数据 公式: Tom哥[n] = base_address + (n-1) * data_size 与上面的公式的区别,多了一次 n-1 操作 虽然也能读取数组中的值,但是多了一次减法的指令运算

    1.4K20

    python3面试题:给一个数组,如果数组中有0,则在0后面追加一个0,整体的数组长度不变

    面试题 给一个数组,如果数组中有0,则在0后面追加一个0,整体的数组长度不变,要求不能生成新的数组,只能在当前数组下操作 输入: arr = [1, 2, 4, 0, 5, 0, 9, 6] 期望输出:...[1,2,4,0,0,5,0,0] 解决思路 使用递归,每次找到列表中的0,在后面添加一个0,并移除最后一项,得到新的arr 依次类推,第一次是从0位置开始,下一次从添加0后的位置继续 def func...(index:int, arr:list): """ 如果数组中有0,则在0后面追加一个0,整体的数组长度不变 :param index: index是a的索引 :param...arr: 传入数组 :return: func()函数 index从插入的位置,继续递归 """ if index >= len(arr)-1: return...__main__': arr = [1, 2, 4, 0, 5, 0, 9, 6] print(func(0, arr)) 运行结果:[1, 2, 4, 0, 0, 5, 0, 0]

    90320

    numpy数组中冒号和负号的含义

    numpy数组中":"和"-"的意义 在实际使用numpy时,我们常常会使用numpy数组的-1维度和":"用以调用numpy数组中的元素。也经常因为数组的维度而感到困惑。...总体来说,":"用以表示当前维度的所有子模块 "-1"用以表示当前维度所有子模块最后一个,"负号用以表示从后往前数的元素,-n即是表示从后往前数的第n个元素"#分片功能 a[1: ] 表示该列表中的第1...个元素到最后一个元素,而,a[ : n]表示从第0个元素到第n个元素(不包括n) import numpy as np POP_SIZE = 3 total_size = 10 idx = np.arange...print("good_idx_3", good_idx_3) print("good_idx_4", good_idx_4) # good_idx_1 [7 8 9] # good_idx_2 [0...s print('b1[:-1]\n', b1[:-1]) # 从最外层的模块中分解出除最后一个子模块后其余的模块 # b1[:-1] # [[[ 0 1 2] # [ 3 4 5]

    3.1K20

    0 到 n-1 的数组判重

    求数组中重复的数字?...hash,通过hash判断一个数字是否在之前出现过只需要O(1)的时间复杂度,我们知道hashset的底层过就是hashmap的key,即hash的实现。...但是当数据散乱的程度非常大时,hash会非常消耗空间复杂度。比如数列0,1963,2,15,同时也可能会产生hash的冲突时间。...因为其是数字,同时其数列中的数字只出现在0-n-1所有,我们可以采用直接定址法,这样避免了hash的冲突时间,也同时可以减少空间的复杂度。...可以本地使用快排的交换思想,快速将数据的位置定位,同时我们规定, nums[i] == i,当前位置的数据应该等于当前位置的坐标。 这样就可以使用O(1)的空间负责度完成去重定位。

    50220

    文件描述符fd和0 & 1 & 2的含义(stdin..)

    重定向的实质 1和2的区别 在 Linux 系统中,文件描述符(File Descriptor, FD)是一个非负整数,用于标识打开的文件、输入/输出设备或其他资源。...标准输入、标准输出和标准错误是最常用的文件描述符,其对应的值为 0、1 和 2,具体含义和使用说明如下: 文件描述符的含义 标准输入(stdin) 描述符: 0 用途: 接收输入数据,通常是来自键盘的用户输入...小结 文件描述符 0、1 和 2 用于表示标准输入、标准输出和标准错误,它们在 Linux 等类 Unix 系统中是处理输入输出的基础。通过合理地使用它们,可以方便地进行 I/O 操作和错误处理。...文件描述符总结 Linux中的文件描述符总结如下: 定义与用途: 文件描述符是内核为了高效管理已被打开的文件所创建的索引,是一个非负整数。...缓冲区: 每个被打开的文件都各自拥有一个缓冲区。 使用write系统调用写入数据时,数据首先被拷贝到目标文件的缓冲区中,再由操作系统决定何时将数据刷新到外设中。

    1K10
    领券