$( ) 的用途和反引号``一样,用来表示优先执行命令,比如ls -l $(locate build.xml),表示优先找到build.xml然后再列出详细的信息。
${ } 就是取到变量了,比如echo $(PATH),打印出变量PATH的值.
$ basename --help可以查看basename的用法.
该命令的用法为显示文件名: 为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。
basename命令格式:
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
$basename /home/cloudwave/zookeeper.out结果为zookeeper.out,
$basename /home/cloudwave/zookeeper.out .out结果为zookeeper
basename "123.txt"结果为123.txt
basename "123.txt" ".txt"结果为123
注意两点:
1、如果像下面脚本中传递参数给basename,参数为空,basename会将参数左移
2、basename最多接受两个参数,如果设置的参数多于两个,会提示错误
3、$@为传递的参数,$#为传递的参数的个数
4、$? 是shell变量,表示"最后一次执行命令"的退出状态,一般0表示成功,非0数值表示没有成功。$?永远表示shell命令最后一次执行后的退出状态,当函数执行完毕后,如果又执行了其它命令,则$?不再表示函数执行后的状态,而表示其它命令的退出状态.
5、$!代表pid,进程id
6、$$代表ppid,父进程id
7、bash脚本的特殊用法:
${BASH_SOURCE-$0} 表示获取脚本的名称
${parameter:-default}表示指定默认值,例如SLAVE_FILE=${HADOOP_SLAVES:-${HADOOP_CONF_DIR}/slaves}
8、$ ps -ef|grep 24247
500 6900 1606 0 14:12 pts/0 00:00:00 grep 24247
进程用户ID(UID):500
进程ID(PID):6900
父进程ID(PPID):1606
CPU调度情况,CPU用于计算执行优先级的因子:0
进程启动时间STIME:14:12
启动进程的终端名称:pts/0
进程占用CPU的时间TIME: 00:00:00
启动进程的命令:grep 24247