在linux下shell脚本执行命令主要有四种方式,具体介绍如下:
方式一:
切换到shell脚本所在的目录(也叫工作目录)执行shell脚本,具体代码是:
cd /data/shell
./hello.sh
方式二:
可以以绝对路径的方法去执行bash shell脚本,具体代码是:
/data/shell/hello.sh
方式三:
可以选择直接使用bash命令或者sh命令来执行bash shell脚本,具体代码是:
cd /data/shell
bash hello.sh
或者
cd /data/shell
sh hello.sh
方式四:
还可以选择在当前的shell环境中执行bash shell脚本,具体代码是:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
说明:前三种方式执行shell脚本时都需要在当前shell(即父shell)开启的一个子shell环境中执行,完成之后就会关闭回到原来的shell中,但方式四是直接在当前的shell中执行的。
以上就是小编的分享了,希望能够帮助到大家。
每天三分钟搞定linux shell脚本25 shell函数的基本使用
代码重用的时候,通过函数非常方便。在函数代码块中实现逻辑,在需要使用的时候调用该函数,建立脚本:
#/bin/bashfunction echo1 { echo "This is function 1"}echo2() { echo "This is function 2"}echo1echo2
运行后输出:
This is function 1This is function 212
shell中的函数必须先定义后使用,否则就会报错。同时函数名也必须是唯一的,如果定义了两个相同名字的函数,后面的会覆盖前面的。
注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号}写在同一行,命令末尾必须有;号。
之前我们在使用脚本的时候也给脚本传参过,向函数传递参数以及函数中处理参数的过程跟这个相同。比如用$#表示参数的总个数,用$1表示第一个参数等等。
1 传递普通变量向函数传递普通变量的时候只要在调用的时候把参数写在后面即可,举例如下:
#/bin/bashfunction process_param { if [ $# -eq 0 ] || [ $# -gt 2 ];then echo "-1" elif [ $# -eq 1 ];then echo $[ $1 * 10 ] else echo $[ $1 $2 ] fi}value=$(process_param)echo "value of process_param is $value"value=$(process_param 1)echo "value of process_param 1 is $value"value=$(process_param 1 2)echo "value of process_param 1 2 is $value"
运行后结果为:
value of process_param is -1value of process_param 1 is 10value of process_param 1 2 is 32传递数组
向函数传递数组的时候,如果以变量名的形式传参,函数内部将只能拿到数组的第一个元素。举例如下
#/bin/bashfunction show_array { echo "num is array is $@" array=$1 echo "array is ${array[*]}"}array_source=(1 2 3)echo "array_source is ${array_source[*]}"show_array $array_source
运行后结果为:
array_source is 1 2 3num is array is 1array is 1
如果想要传递整个数组的话,在函数调用处和函数内部都要使用echo语句,举例如下:
#/bin/bashfunction show_array { array=($(echo "$@")) for value in ${array[*]} do echo "value is $value" done}test_array=(1 2 3)echo "array_source is ${test_array[*]}"show_array $(echo ${test_array[*]})
运行后结果如下:
array_source is 1 2 3value is 1value is 2value is 3
通过echo语句可以传递整个数组了。