本文将为您提供关于linuxshell脚本获取当前函数名的详细介绍,我们还将为您解释shell获取当前脚本名称的相关知识,同时,我们还将为您提供关于Linux-常用shell简介及shell基本操作、
本文将为您提供关于linux shell 脚本 获取当前函数名的详细介绍,我们还将为您解释shell获取当前脚本名称的相关知识,同时,我们还将为您提供关于Linux - 常用 shell 简介及 shell 基本操作、Linux =有没有类似“Java Shell”而不是其他Linux shell?、Linux PHP53升级PHP5533 linux php升级5.5 php5.2 for linux linux libphp5.s、linux Shell 命令行-03-array Shell 数组的实用信息。
本文目录一览:- linux shell 脚本 获取当前函数名(shell获取当前脚本名称)
- Linux - 常用 shell 简介及 shell 基本操作
- Linux =有没有类似“Java Shell”而不是其他Linux shell?
- Linux PHP53升级PHP5533 linux php升级5.5 php5.2 for linux linux libphp5.s
- linux Shell 命令行-03-array Shell 数组
linux shell 脚本 获取当前函数名(shell获取当前脚本名称)
linux bash shell 中
$FUNCNAME 得到当前函数名
${FUNCNAME[1]} 得到上一层函数名 如果上层没有函数调用 则为空
在C/C++中,__FUNCTION__常量记录当前函数的名称。有时候,在日志输出的时候包含这些信息是非常有用的。而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素为当前函数的名称。
可能初看有点难以理解,为什么FUNCNAME要是一个数组呢?看看下面的例子,你就明白了。
#!/bin/bash
function test_func()
{
echo "Current $FUNCNAME,\$FUNCNAME => (${FUNCNAME[@]})"
another_func
echo "Current $FUNCNAME,\$FUNCNAME => (${FUNCNAME[@]})"
}
function another_func()
{
echo "Current $FUNCNAME,\$FUNCNAME => (${FUNCNAME[@]})"
}
echo "Out of function,\$FUNCNAME => (${FUNCNAME[@]})"
test_func
echo "Out of function,\$FUNCNAME => (${FUNCNAME[@]})"
执行后的结果为:
Out of function,$FUNCNAME => ()
Current test_func,$FUNCNAME => (test_func main)
Current another_func,$FUNCNAME => (another_func test_func main)
Current test_func,$FUNCNAME => (test_func main)
Out of function,$FUNCNAME => ()
所以,更加准确地说,FUNCNAME是一个数组,但是bash中会将它维护成类似一个堆栈的形式。
与FUNCNAME相似的另外一个比较有用的常量是BASH_SOURCE,同样是一个数组,不过它的第一个元素是当前脚本的名称。
这在source的时候非常有用,因为在被source的脚本中,$0是父脚本的名称,而不是被source的脚本名称。而BASH_SOURCE
就可以派上用场了。
# If the script is sourced by another script
if [ -n "$BASH_SOURCE" -a "$BASH_SOURCE" != "$0" ]
then
do_something
else # Otherwise,run directly in the shell
do_other
fi
唯一遗憾的是,这种做法会让脚本失去一些可移植性,因为不是所有的shell都支持这些常量。
Linux - 常用 shell 简介及 shell 基本操作
1. 查询 shell 环境变量,切换 shell 种类
表明目前使用的 shell 种类是 bash。
要想改变 shell 种类,在终端输入想要运行的 shell 名称即可。在切换 shell 种类的过程中,可能会操作失败,这是因为 ubuntu 没有自带安装想要切换的 shell 种类。
2.shell 命令的基本格式
shell 的命令格式如下:
command -options [argument]
command:shell 命令的名称。
-options: 选项,同一个命令可能有很多不同的选项,用来完成不同的具体功能。
[argument]: 参数,作为 shell 命令的输入,有的 shell 命令可以没有参数,或者不带参数运行。
例如:
ls //查看当前目录下的文件及文件夹
ls -l //查看当前目录下的文件及文件夹的详细信息
ls -l /home //查看/home目录下的文件及文件夹的详细信息
3.shell 的常用特殊符号
(1)“*”
是一个通用符号,可以表示任意一个字符(包括空字符)或多个字符组成的字符串。例如
ls -l /bin/e* //查看/bin/目录下的所有以e开头的文件及文件夹的详细信息
(2)“?”
功能类似于 “*” 符号,但是只能表示单个字符,不能表示由多个字符组成的字符串。例如
ls -l /bin/e? //查看/bin/目录下的所有以e开头的长度为2的文件及文件夹的详细信息
(3)“[ ]”
指定范围,用来指定被显示的内容的范围。例如,在 /home/leon 目录下新建一个文件夹,名为 test, 在 test 文件夹下新建 5 个文件夹,名为 a、b、c、d、e。
cd /home/leon/test //进入到该目录下cd /home/leon/test
ls [a-c] //仅查看名为a~c的文件及文件夹
(4)“!”
排除符号,用来指定被屏蔽显示内容的部分。需要与 “[]” 符号联合使用。例如
ls [a-c] //仅查看名为a~c的文件及文件夹
(5)“;”
分割符号,用于在一行输入多个命令时,分隔各个命令。例如
ls;ls -l //查看当前目录下的文件及文件夹,然后查看他们的详细信息
(6)“`”
命令替代符,这个符号总是成对出现,他们包含的内容在 shell 中表示一条命令,并且会被执行。例如
echo `ls -l` //将命令“ls -l”的结果显示出来
echo ''ls -l'' //这里是单引号,表示显示“ls-l”这个字符串
(7)“#”
注释符号,以 “#” 开头的一行被当作是注释处理,不会被执行。
ls -l //查看当前目录下的文件和文件夹的详细信息
# ls -l //添加上“#”号,该命令被当作注释,不会被执行
4. 自动补全功能
输入 “who”, 然后按住 TAB 键,系统将发出警报声,此时可以继续输入,也可以在此按下 TAB 键,系统将列出说有 who 开头的命令。
5. 按方向键上和下可以选择曾经输入过的历史命令。
6.shell 别名机制
需要用到 “alias” 命令
mynet //输入mynet,Linux中并无此命令
ifconfig //ifconfig命令可以查看网络情况
alias mynet=ifconfig //给ifconfig起个别名mynet
mynet //mynet就可以生效了
Linux =有没有类似“Java Shell”而不是其他Linux shell?
解决方法
Linux PHP53升级PHP5533 linux php升级5.5 php5.2 for linux linux libphp5.s
linux Shell 命令行-03-array Shell 数组
拓展阅读
linux Shell 命令行-00-intro 入门介绍
linux Shell 命令行-02-var 变量
linux Shell 命令行-03-array 数组
linux Shell 命令行-04-operator 操作符
linux Shell 命令行-05-test 验证是否符合条件
linux Shell 命令行-06-flow control 流程控制
linux Shell 命令行-07-func 函数
linux Shell 命令行-08-file include 文件包含
linux Shell 命令行-09-redirect 重定向
定义
Shell 仅支持单维数组。
array=(值1 值2 ... 值n)
- array.sh
#!/bin/sh
# 数组演示
array=(a b "c" d)
# 另一种定义数组的方式
array_two[0]=a
array_two[1]=b
array_two[2]="c"
array_two[3]=d
读取
您可以这样从数组中读取:
${array_name[index]}
- read_array.sh
#!/bin/sh
# 从数组中读取
array=(a b c "d")
echo "第一个元素是 ${array[0]}"
echo "第二个元素是 ${array[1]}"
echo "第三个元素是 ${array[2]}"
echo "最后一个元素是 ${array[-1]}"
- 运行
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# chmod +x read_array.sh
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# ./read_array.sh
第一个元素是 a
第二个元素是 b
第三个元素是 c
最后一个元素是 d
读取所有元素
我们可以使用 *
或 @
来获取数组中的所有元素。
- read_all_array.sh
#!/bin/sh
# 读取数组中的所有元素
array=(a b c d)
echo "数组中的所有元素:${array[*]}"
echo "数组中的所有元素:${array[@]}"
- 运行
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# chmod +x read_all_array.sh
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# ./read_all_array.sh
数组中的所有元素:a b c d
数组中的所有元素:a b c d
数组长度
我们可以使用 ${#array[*]}
或 ${#array[@]}
来获取数组的大小。
- array_length.sh
!#/bin/sh
# 数组长度
array=(a b c d E)
echo "数组的大小为:${#array[*]}"
echo "数组的大小为:${#array[@]}"
- 运行
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# chmod +x array_length.sh
root@iZuf60ahcky4k4nfv470juZ:~/code/shell# ./array_length.sh
数组的大小为:5
数组的大小为:5
参考资料
https://www.runoob.com/linux/linux-shell.html
本文由博客一文多发平台 OpenWrite 发布!
关于linux shell 脚本 获取当前函数名和shell获取当前脚本名称的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Linux - 常用 shell 简介及 shell 基本操作、Linux =有没有类似“Java Shell”而不是其他Linux shell?、Linux PHP53升级PHP5533 linux php升级5.5 php5.2 for linux linux libphp5.s、linux Shell 命令行-03-array Shell 数组等相关知识的信息别忘了在本站进行查找喔。
本文标签: