当前位置:网站首页>shell脚本实战(第2版)/人民邮电出版社 脚本1 在PATH中查找程序

shell脚本实战(第2版)/人民邮电出版社 脚本1 在PATH中查找程序

2022-08-09 10:26:00 玛丽苏打肉饼

#!/bin/bash
#inpath

in_path()
{
  cmd=$1    ourpath=$2    result=1  #1
  oldIFS=$IFS      IFS=":"       #2
  for directory in $ourpath
  do
	  if [ -x $directory/$cmd ]; then   #3
		  result=0
          fi
  done

  IFS=$oldIFS
  return $result
}

checkForCmdInpath()
{
  var=$1
  if [ "$var" != "" ];then
	  if [ "${var:0:1}" = "/" ];then  #4
		  if [ ! -x $var ];then
			  return 1
	          fi
          elif ! in_path $var "$PATH";then
		  return 2;
          fi
  fi
}
checkForCmdInpath "$1"
case $? in    
	0) echo "$1 found in PATH" ;;
	1) echo "$1 not found or not executable" ;;
	2) echo "$1 not found in PATH" ;;
esac
exit 0

1:shell脚本的默认变量

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
[email protected] 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

sh test.sh    opt1 opt2 opt3 opt4
     $0        $1   $2   $3   $4

2:IFS分隔符

https://zhuanlan.zhihu.com/p/36513249

3:判断符号[ ]

’[ ]‘里面每个组件都需要用空格分隔。变量最好用引号包围。

检查文件权限

   -r  文件是否存在,且可读权限
    -w  文件是否存在,且可写权限
    -x  文件是否存在,且可执行权限
    -u  文件是否存在,且具有SUID属性
    -g  文件是否存在,且具有SGID属性
    -k  文件是否存在,且具有 Sticky bit 属性
    -s  文件是否存在,且为 非空白文件

4:变量切分语法,从偏移处开始,按照给定长度截取(如果没有提供长度,则返回余下的全部字符串)

 脚本1运行结果

 

原网站

版权声明
本文为[玛丽苏打肉饼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43873960/article/details/122217747