用户名日志加时间戳
- [root@hadoop scripts]# vim cmd_test.sh
- #!/bin/bash
-
- filename="$1"_log_$(date +%s)
- echo $filenam
- [root@hadoop scripts]# chmod +x cmd_test.sh
- [root@hadoop scripts]# . cmd_test.sh zhangsan
- zhangsan_log_1660710993
basename [string / pathname] [suffix]
功能描述:basename 命令会删掉所有的前 缀包括最后一个(‘/’)字符,然后将字符串显示出来。 basename 可以理解为取路径里的文件名称
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的suffix 去掉
字符串剪切
- [root@hadoop scripts]# basename /root/scripts/parameter.sh #前面截取
- parameter.sh
- [root@hadoop scripts]# basename /root/scripts/afdfsg #没有存在文件也可以截取
- afdfsg
- [root@hadoop scripts]# basename /root/scripts/parameter.sh .sh #前后都截取
- parameter
或者
- [root@hadoop scripts]# vim parameter.sh
- #!/bin/bash
- echo '===============$n================'
- echo scripts name:$(basename $0 .sh)
- echo 1st parament: $1
- echo 2nd parament: $2
- echo '===============$#================'
- echo parameter numbers: $#
- echo '===============$*================'
- echo $*
- echo '===============$@================'
- echo $@
- [root@hadoop scripts]# ./parameter.sh a b
- ===============$n================
- scripts name:parameter
- 1st parament: a
- 2nd parament: b
- ===============$#================
- parameter numbers: 2
- ===============$*================
- a b
- ===============$@================
- a b
dirname 文件绝对路径
(功能描述:从给定的包含绝对路径的文件名中去除文件名 (非目录的部分),然后返回剩下的路径(目录的部分))
dirname 可以理解为取文件路径的绝对路径名称
截取路径最后一个/之前的路径
- [root@hadoop scripts]# dirname /root/scripts/parameter.sh
- /root/scripts
- [root@hadoop scripts]# dirname ../scripts/parameter.sh
- ../scripts
或者
- [root@hadoop scripts]# vim parameter.sh
- [root@hadoop scripts]# cat parameter.sh
- #!/bin/bash
- echo '===============$n================'
- echo scripts name:$(basename $0 .sh)
- echo scripts path:$(cd $(dirname $0); pwd) #前后执行命令,
- echo 1st parament: $1
- echo 2nd parament: $2
- echo '===============$#================'
- echo parameter numbers: $#
- echo '===============$*================'
- echo $*
- echo '===============$@================'
- echo $@
- [root@hadoop scripts]# ./parameter.sh a b
- ===============$n================
- scripts name:parameter
- scripts path:/root/scripts
- 1st parament: a
- 2nd parament: b
- ===============$#================
- parameter numbers: 2
- ===============$*================
- a b
- ===============$@================
- a b
[ function ] funname[()]
{
Action;
[return int;]
}
(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一 样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将 以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)
计算两个输入参数的和。
第一种方法,相加的超过255会报错
- [root@hadoop scripts]# vim fun_test.sh
- #!/bin/bash
-
- function add(){
- s=$[$1 + $2]
- echo "和:"$s
- }
-
- read -p "请输入第一个整数:" a
- read -p "请输入第二个整数:" b
-
- add $a $b
- [root@hadoop scripts]# chmod +x fun_test.sh
- [root@hadoop scripts]# ./fun_test.sh
- 请输入第一个整数:35
- 请输入第二个整数:67
- 和:102
第二种方法,相加的超过255不会报错,结果不对
- [root@hadoop scripts]# vim fun_test.sh
- #!/bin/bash
-
- function add(){
- s=$[$1 + $2]
- return $s
- }
-
- read -p "请输入第一个整数:" a
- read -p "请输入第二个整数:" b
-
- add $a $b
- echo "和:" $?
- [root@hadoop scripts]# ./fun_test.sh
- 请输入第一个整数:35
- 请输入第二个整数:45
- 和: 80
- [root@hadoop scripts]# ./fun_test.sh
- 请输入第一个整数:156
- 请输入第二个整数:237
- 和: 137
第三种,更加完整,还可以求平方
- [root@hadoop scripts]# vim fun_test.sh
- #!/bin/bash
-
- function add(){
- s=$[$1 + $2]
- echo $s
- }
-
- read -p "请输入第一个整数:" a
- read -p "请输入第二个整数:" b
-
- sum=$(add $a $b)
- echo "和的"$sum
- echo "和的平方:"$[ $sum * $sum]
- [root@hadoop scripts]# ./fun_test.sh
- 请输入第一个整数:146
- 请输入第二个整数:237
- 和的383
- 和的平方:146689