zoukankan      html  css  js  c++  java
  • shell命令相关问题

    问题:shell 编程 错误 bash: [: missing `]'

    原因:在if的[-f %{path}]内左右两边应该各有一个空格。

    解决方法:在if[ ]内部两侧各添加一个空格。

    问题:通过shell命令给某文件追加内容

    解决方法:可以用 echo "aaa" >> /home/kevingo/example.txt 命令来追加内容。

    问题:shell命令中的if多个判断怎么写

    解决方法:

    if[ -f /home/admin/a.txt ];then

      echo "该文件存在"

    elif [ -f /home/admin/b.txt ];then

      echo "该文件存在"

    问题:维护者的脚本 preinst 的权限位是 644 (必须 >=0555 且 <=0775),这是在打deb安装包时出现的问题。

    原因:是该文件的权限问题

    解决方法:改变其权限为0755。

    问题:执行bash文件,提示找不到命令。

    解决方法:执行bash文件有三种方式:1.cd到该bash文件下,./xxx.sh执行。2.直接全路径/home/admin/xxx.sh。3.cd到该bash文件所在目录,用命令sh执行。

    问题:shell中的if怎么判断某变量是否存在

    解决方法:

    -e 判断对象是否存在

    -d 判断对象是否存在,并且为目录

    -f 判断对象是否存在,并且为常规文件

    -L 判断对象是否存在,并且为符号链接

    -h 判断对象是否存在,并且为软链接

    -s 判断对象是否存在,并且长度不为0

    -r 判断对象是否存在,并且可读

    -w 判断对象是否存在,并且可写

    -x 判断对象是否存在,并且可执行

    -O 判断对象是否存在,并且属于当前用户

    -G 判断对象是否存在,并且属于当前用户组

    -nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]

    -ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

    -eq           //等于

    -ne           //不等于

    -gt            //大于

    -lt            //小于

    -ge            //大于等于

    -le            //小于等于

    问题:shell中怎么创建多级目录,怎么创建多个同级目录

    解决方法:

    创建多个同级目录:mkdir {path1,path2,path3}

    创建多级目录:mkdir -p path1/path2/path3   #(注:此处可以path1,path2,path3都不存在)

    综上,可得创建多级同级目录:mkdir -p path1/path2/{path3,path4,path5}    #  : )

    问题:编写bash文件时,需要某个同级目录下配置文件中的内容

    解决方法:在bash中添加:source ./xxx.properties,然后就可以获取配置文件中的变量:echo $path1 (假设xxx.properties中包含有path1变量)。

    问题:在bash文件的开头,定义了一个以命令结果为值的变量,但之后总报错说找不到。

    原因:bash文件是按从头到尾的顺序执行的,所以该变量的值在文件开头时候就被赋予了,命令也是在开头被执行的,此时命令执行的结果是错误的。

    解决方法:以命令结果为值的变量必须在bash文件合适的位置赋值,不能提前也不能靠后。

    问题:在写.spec文件时,能不能把默认的buildroot或是build路径根据需要进行更改。

    原因:目前,可以把该需要的路径写进去,必须是固定的,但是不能动态的自动进行更改(方法暂时还没想出来)。

     %{_builddir},%{_rpmdir}等五个文件夹都是在其目录前加 %{_topdir},如:%{_topdir}/BUILD, %{_topdir}/RPMS,而 %{_topdir}则是由 %{getenv:HOME}/rpmbuild 组成,而%{getenv:HOME}是获取当前用户的主目录。可以据此来进行可选择的更改。
    这些宏变量是参考https://blog.csdn.net/wangyezi19930928/article/details/54693827 这位老哥的,这篇文章中还详细解释了其他宏变量。
     
    问题:编译spec文件时,报“spec错误:宏 % 中存在无效的名称 (%define)”
    原因:可能是%define定义变量时,变量名称没有写对,比如命名变量时不能以$为开头
    解决方法:检查定义的变量名称是否规范。
     
    问题:打包时spec报错“错误:坏文件:‘/root/xxx/xxx’: 没有那个文件或目录”
    原因:在“Source”字段多添加了几个不必要的文件(不太清楚为什么多添加几个Source文件就不行)
    解决方法:删去不必要的Source文件。
     
    问题:ubuntu下写bash脚本, 报命令:not found错误。
    原因:ubuntu默认的sh是连接到dash的,同时dash和bash不兼容所以出错。
    解决方法:修改sh默认连接,命令:sudo dpkg-reconfigure dash ,选择no即可。
     
    问题:shell获取当前用户名、id
    解决方法:$UID,$USER,id,whoami
     
    问题:shell多条命令一起执行
    解决方法:
    1.每个命令之间用;隔开,每个命令都会执行,相互之间不影响。
    2.每个命令之间用&&隔开,前一个命令成功,执行后一个命令。
    3.每个命令之间用||或|隔开,执行到一个成功命令停止。
    过程参考这位老哥的,有详细例子:https://www.cnblogs.com/mydriverc/p/8302584.html
     
    问题:shell cp多个文件
    解决方法:
    1. cp  /home/usr/dir/{file1,file2,file3,file4}  /home/usr/newdir/     #mkdir多个同级文件夹时也是用此种方法
    2.有共同前缀:cp  /home/usr/dir/file{1..4}  ./
    金无足赤,人无完人,若有文章什么问题欢迎各位批评指正,共同交流,共同进步。 另,人过留名,雁过留声,少侠觉得还行的话留下个赞吧!:)
  • 相关阅读:
    Win32 开发
    Corners in C#
    swfupload在IE8下显示正常,但是单击添加按钮无反应
    Windows Script Host(WSH)
    研磨设计模式 之 中介者模式(Mediator)
    Pure GPU Computing Platform : NVIDIA CUDA Tutorial
    BattleField 2142引擎图形程序员小访谈
    利用SAH实现kD树快速分割模型实践
    给大家看一下德国的家居装潢技术,在装修房子的朋友可以欣赏一下
    Python与Microsoft Office自动化操作
  • 原文地址:https://www.cnblogs.com/thePeaceOftheLord/p/11081569.html
Copyright © 2011-2022 走看看