Shell脚本学习《一》

在公司有很多地方都会用到shell脚本,用来跑spark程序或者用来写脚本进行数据批处理。

介绍一下,shell

1.shell简介

Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的。Shell既是一種命令語言,又是一種程序設計語言。作為命令語言,它交互式地解釋和執行用戶輸入的命令;作為程序設計語言,它定義了各種變量和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。
它雖然不是Unix/Linux系統內核的一部分,但它調用了系統核心的大部分功能來執行程序、建立文件並以並行的方式協調各個程序的運行。因此,對於用戶來說,shell是最重要的實用程序,深入了解和熟練掌握shell的特性極其使用方法,是用好Unix/Linux系統的關鍵。
Shell有兩種執行命令的方式:

1、交互式(Interactive):解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條。

2、批處理(batch):用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。
Shell腳本和編程語言很相似,也有變量和流程控制語句,但Shell腳本是解釋執行的,不需要編譯,Shell程序從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。

大體上,可以將程序設計語言可以分為兩類:編譯型語言和解釋型語言。

編譯型語言

很多傳統的程序設計語言,例如Fortran、Ada、Pascal、C、C++和Java,都是編譯型語言。這類語言需要預先將我們寫好的源代碼(source code)轉換成目標代碼(object code),這個過程被稱作“編譯”。
運行程序時,直接讀取目標代碼(object code)。由於編譯後的目標代碼(object code)非常接近計算機底層,因此執行效率很高,這是編譯型語言的優點。
但是,由於編譯型語言多半運作於底層,所處理的是字節、整數、浮點數或是其他機器層級的對象,往往實現一個簡單的功能需要大量復雜的代碼。例如,在C++裏,就很難進行“將一個目錄裏所有的文件復制到另一個目錄中”之類的簡單操作。

解釋型語言

解釋型語言也被稱作“腳本語言”。執行這類程序時,解釋器(interpreter)需要讀取我們編寫的源代碼(source code),並將其轉換成目標代碼(object code),再由計算機運行。因為每次執行程序都多了編譯的過程,因此效率有所下降。

使用腳本編程語言的好處是,它們多半運行在比編譯型語言還高的層級,能夠輕易處理文件與目錄之類的對象;缺點是它們的效率通常不如編譯型語言。不過權衡之下,通常使用腳本編程還是值得的:花一個小時寫成的簡單腳本,同樣的功能用C或C++來編寫實現,可能需要兩天,而且一般來說,腳本執行的速度已經夠快了,快到足以讓人忽略它性能上的問題。腳本編程語言的例子有awkperl、Python、Ruby與Shell。

2.第一行代码

首先写自己的第一行shell代码

打开文本编辑器

1. touch test.sh //新建脚本

2.chomd +x ./test.sh修改可执行权限

3./test.sh //执行脚本

3.Shell变量

定义变量

定义变量名时,变量名不需要加美元($),注意变量名和等号之间不能有空格,同时变量名遵循的命令原则如下:

1、首個字符必須為字母(a-z,A-Z)。

2、中間不能有空格,可以使用下劃線(_)。

3、不能使用標點符號。

4、不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)。

以下是脚本:

your_name="盛俊阳"
echo "Hello World!"
echo $your_name
echo "what is your name?"

#echo "Hello,$PRESS"

#号是注释这一行

4.输入参数

示例一:

$0是获取到的脚本路径以及脚本名,后面的参数,分别是参数1、参数2中间用空格隔开

#!/bin/bash
echo "脚本名$0"
echo "第一个参数$1"
echo "第二个参数$2"

文末附上linux的命令行写的真好

https://www.linuxprobe.com/chapter-04.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值