- 问题:在/etc/rc.local中运行一个脚本,脚本中的命令不执行。
解决方案:脚本里面用到的命令要加绝对路径。
参考资料:http://bbs.chinaunix.net/thread-4114921-1-1.html - 问题:如何在当前脚本文件中调用另外一个脚本文件?
解决方案:使用source或.
脚本 first (测试示例1)#!/bin/bash echo 'your are in first file'
方法一: 使用source
脚本 second (测试示例2)#!/bin/bash echo 'your are in second file' source first
方法二: 使用.
脚本 second (测试示例3)#!/bin/bash echo 'your are in second file' . first
参考资料:shell中调用另外的脚本文件的两种方法:http://forum.ubuntu.org.cn/viewtopic.php?f=88&t=1878
- shell如何获取当前执行脚本的路径
#!/bin/bash # dirname $0,取得当前执行的脚本文件的父目录 # cd `dirname $0`,进入这个目录(切换当前工作目录) # pwd,显示当前工作目录(cd执行后的) filepath=$(cd `dirname $0`; pwd) # 把脚本文件的绝对路径存在环境变量filepath中,可以输出$filepath查看完整路径 echo $filepath
在shell中:
$0: 获取当前脚本的名称
$#: 传递给脚本的参数个数
$$: shell脚本的进程号
$1, $2, $3...:脚本程序的参数
参考资料:
shell获取当前执行脚本的路径:http://blog.163.com/liumaohua890413@126/blog/static/357851642011910754693/
[HowTo][Bash]如何取得当前正在执行的脚本的绝对路径?http://sexywp.com/bash-how-to-get-the-basepath-of-current-running-script.htm - shell中$0,$?,$!等的特殊用法变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
我们先写一个简单的脚本,执行以后再解释各个变量的意义
# touch variable
# vi variable
脚本内容如下:
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
保存退出
赋予脚本执行权限
# chmod +x variable
执行脚本
# ./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb
通过显示结果可以看到:
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
0 条评论。