$_ 有好几个功能,我们最常用的是用它来获取“刚刚执行过的命令的最后一个参数”这个功能,比如下面这样: $ ls ~/Downloads/very/long/dir/  # ls 到某个目录看看有没有我们想要的文件 file1 file2 needed_file $ cd $_ # 如果有,就进入到那个文件夹,$_ 让你省去了不少键盘敲击数 Bash manual 中对 $_ 的这个功能的描述只有一句话: expands to the last argument to the previous…
首先,我们想到的会是 export(等价于 declare -x)命令: $ export | grep 'declare -x _=' 没有找到,那么结论就是 _ 不是环境变量?当然没那么简单,否则本篇文章就该结束了.别忘了还有 env(或者 printenv)命令: $ env | grep '_=' _=/usr/bin/env 这下怎么办,_ 到底是不是环境变量?谁说的对?然而下面还有更诡异的: $ bash -c "export | grep 'declare -x _='"…
bash 中的特殊变量 变量 说明 ------------------------------------ $0 当前脚本的文件名 $n 第n个位置参数 $* 传递给脚本或函数的所有参数,$*会将这些参数视为一个整体 $@ 传递给脚本或函数的所有参数,$@会将所有参数当作同一字符串中的多个独立的单词 $# 脚本运行时携带的参数个数 $? 最近一个命令的退出状态码 $$ 当前shell的进程ID(PID) $! 最近一个后台命令的PID !! 执行上一条命令…
在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况,在此将通用的处理方法小结如下: java变量传给js好办,var a=”<%=javaParam%>“;注意要将引号”"加上: js变量给java稍微复杂点,一般是在表单中用一个的隐藏表单元素,然后在脚本中将js变量值赋给它: var jsParamValue=’aaaa’;form1.jsParam.value=jsParamValue; 然后就可以request.getPrameter(“jsP…
在 Bash 里,可以通过 export 命令查看当前 Shell 进程的环境变量,这些环境变量一些是 Bash 自己创建的,还有一些是 Bash 从父进程继承来的,然而需要注意的是,父进程传给 Bash 的环境变量不一定是我们想象的那样. 在 C 语言层面,环境变量是存放在一个名为 environ 的全局变量里的,这个变量的值是一个字符串的数组,像这样: {"foo=1", "bar=2"} 在父子孙一辈辈进程中传递的就是这么个数组,我们嘴里说的环境变量的原貌其实…
位置参量:向脚本或函数传递的参数,可以被set命令设置.重置和清空. 1.$$ 当前Shell的PID 2.$- 当前Shell的选项,如果是交互式shell,应该包含字符i,例如$ echo $-himBH 3.$? 最后一个命令的退出状态值,0-成功,非0-不成功 4.$! 最后一个放入后台作业的PID 5.$0 当前执行脚本的名字 6.$1-9, ${10-xx} 第1~9,10~xx个位置参量 7.$# 位置参量的个数 8.$* 位置参量的整体字符串 9.$@ 位置参量数组 注意:$*和…
1.向尾部方向的最小化删除 (%) $pathname="/usr/bin/local/bin"$echo ${pathname%/bin*}/usr/bin/local 2.向尾部方向的最大化删除(%%) $pathname="/usr/bin/local/bin"$echo ${pathname%%/bin*}/usr 3.向首部方向的最小化删除(#) $pathname=/home/lilliput/jake/.bashrc$echo ${pathname#/…
Bash中的变量1.用户定义的变量变量的定义  用户定义的变量有字母数字及下划线组成,并且变量名的第一个字符不能为数字.            与其它UNIX名字一样,变量名是大小写敏感的. 对于变量,用户可按如下方式赋值:               name = value 变量的引用              在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值(一个变量的值赋给另一个变量),如:               (前面的$是命令提示符)              …
bash 中的变量 Linux command line 笔记 变量无需声明,自动创建 var=abc #变量a赋值为字符串abc var="hello world" #字符串里有空格赋值要加引号 var="hello world $var" #任何可以扩展成字符串的都可以赋给变量 var=$(ls -l *.md) # 输出结果为字符串的命令 var=$(5*5) #运算符 var="hello\nworld" #转义字符串序列,例子中的\n…
在bash中,如果循环在一个子shell中运行,那么在循环中对循环外面的变量的更改将在循环退出后不可见.像下面的例子: #!/bin/sh python run.py | while read line do echo $line let "var=var+1" done echo $var 最后面的echo输出的var仍然是1.原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的var变量和文件开头定义的var变量是…