第三章、shell语法 文件重定向 引入外部脚本
2022/7/11 5:21:31
本文主要是介绍第三章、shell语法 文件重定向 引入外部脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第三章、shell语法 文件重定向 引入外部脚本
文件重定向
linux
中每个进程默认打开3个文件描述符
stdin
标准输入从命令行中读取字符,文件描述符为0
stdout
标准输出向命令行中输出字符,文件描述符为1
stderr
标准错误输出向命令行中输出错误信息,文件描述符为2
我们可以通过文件重定向将文件描述符和文件产生联系
符号 | 作用 |
---|---|
command_name < file_name |
将stdout 重定向到file_name 中 |
command_name > file_name |
将stdin 以覆盖的形式重定向到file_name 中 |
command_name >> file_name |
将stdin 以追加的形式重定向到file_name 中 |
command_name n> file_name |
将文件描述符n以覆盖的形式重定向到file_name 中 |
command_name n>> file_name |
将文件描述符n以追加的形式重定向到file_name 中 |
示例
(base) xyg@vivo-xyg:~$ echo -e '\thello' # 查看单引号效果 hello (base) xyg@vivo-xyg:~$ echo "\thello" # 查看双引号,但是不使用-e效果 \thello
echo -e "hello \c" > read.txt # 这里首先,可以单引号,也可以双引号,而且也可以不使用\c使用-n表示不换行 echo "world" >> read.txt echo < read.txt # echo 好像无法接受文件重定向, 无法输出 read text < read.txt # 可以正常读取数据输出 echo "${text}"
问题,为什么 echo 无法输出文件标准输入重定向的数据
输出结果
(base) xyg@vivo-xyg:~/xyg/test$ ./test.sh hello world
同时重定向stdin和stdout
text.sh
脚本
#! /bin/bash read a read b echo "$a + $b = $(expr $a + $b)"
调用脚本
(base) xyg@vivo-xyg:~/xyg/test$ ls 1.txt 2.txt read.txt test.sh (base) xyg@vivo-xyg:~/xyg/test$ echo -e "1\n8" > read.txt # read.txt 是 stdin 重定向文件 (base) xyg@vivo-xyg:~/xyg/test$ ./test.sh < read.txt > output.txt # 同时 stdin stdout 重定向 (base) xyg@vivo-xyg:~/xyg/test$ cat output.txt # 查看 stdout 重定向结果 1 + 8 = 9 (base) xyg@vivo-xyg:~/xyg/test$
引入外部脚本
类似于C/C++
中的include
操作,bash
也可以引入其他文件中的代码。
语法格式:
# 语法格式1 . bash_name # 注意点和文件名之间有一个空格 # 语法格式2 source bash_name
#! /bin/bash declare -x global_var='xingyouguang' # 测试全局变量和普通变量的区别 normal_var='xyg'
(base) xyg@vivo-xyg:~/xyg/test$ echo $normal_var # 运行脚本前测试是否存在变量 (base) xyg@vivo-xyg:~/xyg/test$ echo $global_var # 运行脚本前测试是否存在变量 (base) xyg@vivo-xyg:~/xyg/test$ ./test.sh # ./bash_name 普通运行脚本 (base) xyg@vivo-xyg:~/xyg/test$ echo $global_var # 查看变量是否存在,仍旧不存在是因为 global_var 全局针对的是子进程 (base) xyg@vivo-xyg:~/xyg/test$ echo $normal_var # 查看变量是否存在 (base) xyg@vivo-xyg:~/xyg/test$ cat test.sh # 确认脚本文件 #! /bin/bash declare -x global_var='xingyouguang' normal_var='xyg' (base) xyg@vivo-xyg:~/xyg/test$ source test.sh # source 引入外部脚本 (base) xyg@vivo-xyg:~/xyg/test$ echo $global_var # 变量已经生效 xingyouguang (base) xyg@vivo-xyg:~/xyg/test$ echo $normal_var # 变量已经生效 xyg
参考文献
强烈推荐 Y 总的 linux 基础课
linux教程-孟庆昌
这篇关于第三章、shell语法 文件重定向 引入外部脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?