2018-10-17 19:36:49 qq_34810707 阅读数 6711

linux中利用shell脚本条件执行命令

 

在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们的选择自动执行命令,那岂不是完美,本脚本就是为此而生的(以跳转不同的目录举例,当然也可以执行其他命令,这时候只需要类比写shell命令即可) 
1、首先建一个shell脚本start.sh

#!/bin/bash
cd_dir_1="/export/songhongwei/code"
cd_dir_2="/export/songhongwei/data"
cd_dir_3="/export/songhongwei/soft"
echo ""
echo " 1: cd $cd_dir_1"
echo " 2: cd $cd_dir_2"
echo " 3: cd $cd_dir_3"
echo ""
read -p "Please input the choice:"  idx
#if [[ -z "$idx"]];then
#  echo "no choice,exit"
if [[ '1' = "$idx" ]];then
  eval "cd $cd_dir_1"
elif [[ '2' = "$idx" ]];then
  eval "cd $cd_dir_2"
elif [[ '3' = "$idx" ]];then
  eval "cd $cd_dir_3"
else
  echo "no choice,exit!"
fi
echo ""

2、然后把该脚本放在某个目录下,例如本人放在了/export/songhongwei/soft/sh 
3、编辑~/.profile文件把sh目录添加到环境变量即可

PATH="$HOME/bin:$HOME/.local/bin:/export/songhongwei/soft/sh:$PATH"

4、在shell或linux终端中可以在任何目录下直接访问该命令

. start.sh 或 source start.sh

这里写图片描述

注: 
(1)步骤4中,start.sh 前的 点 不能忘记,代表的是在当前bash环境下读取并执行FileName中的命令,否则会新开子进程执行FileName中的命令,此时cd无法再当前bash环境跳转。 
source、sh、bash、./执行脚本的区别:http://blog.csdn.net/yun90/article/details/22667829 
(2)添加sh目录到环境变量目的是一方面可以在任何目录下执行FileName中命令,另外可以在该sh目录下添加多个此类脚本。

2017-10-20 10:46:51 LJFPHP 阅读数 10940

      这个问题也是突然想起来的,因为我身边的同事有时候会把这两个区别的表述,所以我就好奇了,到底是什么关系呢,他们都能操作Linux系统啊。。后来百度一下才知道大致的区别。

一、什么是shell

答:
      shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。 shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。

      总括,shell是linux命令集的概称,是属于命令行的人机界面。Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。Shell 和Shell Script不是一回事,通常我们说的都是Shell Script。

      由定义可知, shell相当于经过装饰的命令行,和命令行一样,都能操作linux。但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作。

二、区别

1、直接在命令行执行 就是在当前的shell环境下执行 比如涉及到一些环境变量的时候 必须在当前shell环境里执行

      在脚本里执行的话 脚本执行的时候 会fork一个子进程 所有操作都在子进程进行 如果涉及到一些在脚本里设置环境变量的东西 脚本结束了 环境变量也就消失了。
这个修改环境变量的话,需要特别注意下。

2、shell可以重复执行一些命令。你也可以把自己要重复执行的命令写到脚本里面执行。而命令行的话就需要一个一个的输入命令,相对而言麻烦一些。

      上面就是一些对于shell和命令行的对比。个人觉得除了非常专业的运维人员,对大多数开发人员来说,这两者的差别不大,也不影响大家对于linux系统的使用。

加油。
end

2018-05-14 19:04:57 yf9595 阅读数 27754

unrar.sh脚本编写为:
该脚本功能是转到/home目录下,将/1.rar压缩包解压到当前文件夹/home下(123456为解压密码)

#!/bin/sh
cd /home
unrar e -p123456 "/1.rar"

将unrar.sh脚本放入linux系统下
执行chmod 777 unrar.sh使脚本具备执行权利,否则会报错:permission denied

执行sh脚本:./unrar.sh
如果报错:/bin/sh^M:bad interpreter:No such file or directory
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决方法如下:
1、修改文件格式

vi filename

2、利用如下命令查看文件格式

:set ff 或 :set fileformat

可以看到如下信息

fileformat=dos 或 fileformat=unix

3、利用如下命令修改文件格式

:set ff=unix 或 :set fileformat=unix

最后再执行文件

2018-07-13 16:43:10 weixin_40780291 阅读数 3601

Linux脚本中使用新控制台运行命令

  1. 命令gnome-terminal
  2. gnome-terminal 后接 { – }后接要在新终端中运行的命令(大括号中为实际内容,大括号中为两个短横线)
2018-06-02 15:56:14 gq__97 阅读数 2736

最近的Linux作业中涉及到了用脚本打开多终端再运行程序的操作,以下是脚本命令:

    gnome-terminal -x bash -c "./可执行文件 + 参数"

注意“+”号只是表示连接,并没有出现在命令中,只需要正常的输入执行命令即可。至于多终端的话,只需要以上加入循环就好了。