diff --git "a/\345\220\225\345\276\220\346\235\255/20240710-shell\345\205\245\351\227\250.md" "b/\345\220\225\345\276\220\346\235\255/20240710-shell\345\205\245\351\227\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..087bda1864a1df6ccb65590cb129d8c42e24bba4 --- /dev/null +++ "b/\345\220\225\345\276\220\346\235\255/20240710-shell\345\205\245\351\227\250.md" @@ -0,0 +1,34 @@ +## 重定向 +标准输入:wc < qq.txt less < ww.txt tail < ee.txt + +标准输出:cat < rr.txt + +标准错误 + +## 管道符 + +一个命令的输出,想作为另一个命令的输入,用到管道符 + +tail -n bb.txt | cat + +## Shell 教程 +Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 + +Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 + +Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 + +## 运行 Shell 脚本有两种方法: +1、作为可执行程序 + +chmod +x ./test.sh #使脚本具有执行权限 +. /test.sh #执行脚本 + +2、作为解释器参数 + +这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如: + +/bin/sh test.sh +/bin/php test.php + +echo 命令用于向窗口输出文本。 \ No newline at end of file diff --git "a/\345\220\225\345\276\220\346\235\255/20240711-shell\350\204\232\346\234\254.md" "b/\345\220\225\345\276\220\346\235\255/20240711-shell\350\204\232\346\234\254.md" new file mode 100644 index 0000000000000000000000000000000000000000..8ad0cd435901eab6b5001d3df1faa9c7216216f1 --- /dev/null +++ "b/\345\220\225\345\276\220\346\235\255/20240711-shell\350\204\232\346\234\254.md" @@ -0,0 +1,95 @@ +### 命名变量 +```shell +shell编程中,定义变量是直接定义的,没有明确的数据类型,shel允许用户建立变量存储数据,但是将认为赋给变量的值都解释为一串字符,如下 +cout=1 # 定义变量 +name="ohuohuo" # 定义变量 +echo $cout # 取变量值 +echo $name # 取变量值 +``` + shell中,英文符号"$"用于取变量值 + +#### 如果在变量中使用系统命令,需要加上 " `"符号(ESC键下方),如下所示 +```shell + DATE1=`date` + DATE2=$(date) +``` + +#### 使用变量的时,用英文符号"$"取变量值,对于较长的变量名,建议加上{ }花括号,帮助解释器识别变量的边界,如下 +```shell + name="test_name" + echo "My name is ${name}and you" +``` + +加上方括号时即所有便后面的语句不留空格,shell也会自动识别边界,默认添加一个空格 + +```shell +My name is test_nameand you +``` + +此外,已经定义过的变量,可以二次定义并重新被赋值覆盖上一次的变量值,这点如同其他语言 + +```shell + name=1 + echo $name + 1 #打印出来是1 +``` + +### 变量类型 + +shell编程中也同样存在变量类型,在运行shell时会同时存在三种变量 + +- **局部变量**:在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 +- 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,必要的时候shell脚本也可以定义环境变量 +- **shell变量**:由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,不同类型的变量保证了shell的正常运行 + +#### shell字符串 + +在shell中字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。 + +获取字符串长度:在对变量进行取值时,使用" # "符号对字符串进行取值 + +单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 + +双引号:可以在双引号中使用变量,可以在双引号中使用转移字符 + +### shell数组 +在 Shell 中,用括号()来定义表示数组,数组中元素用"空格"符号分割开。定义数组的一般形式为: + +#### 一般定义 +```shell +array_name=(value1 value2 value3 value4) +``` +#### 多级定义 +```shell +array_test=( +value1 +value2 +value3 +value4 +) +``` + +### 数组操作 + +#### 读取数组:和读取变量名相同,使用$符号,需要加上下标名 + +```shell +valuen=${array_name[n]} +echo ${array_name[@]} # 读取所有 +``` + +#### 取得数组元素的个数 +```shell + length=${#array_name[@]} # 从头到尾取 +``` + +#### 或者 +```shell + length=${#array_name[*]} # 取所有 +``` + +#### 取得数组单个元素的长度 +```shell + lengthn=${#array_name[n]} # 取特定 +``` +